首页 > 解决方案 > 如何修复 if 语句?

问题描述

我是编码新手,正在努力理解为什么这段代码不起作用。我正在尝试制作一个简单的 if "name = String" 语句,但遇到了很多问题。请看一下并帮助我了解问题所在。问题是底部的 if name 语句。谢谢

导入 java.util.Scanner;

公共课马里兰棒球{

public static void main(String[] args) {
    
    Scanner scanner = new Scanner(System.in);
    System.out.print( "Type 1 to enter a number or 2 to enter a name: " ) ;
    int number = scanner.nextInt() ;

    if (number == 1)
    System.out.print("Enter player number: ");
    if (number == 2)
    System.out.print("Enter player name: ");
    int jersey = scanner.nextInt() ;
    String name = scanner.nextLine();
    
    if (jersey == 42) System.out.print
    ("Which player wears number 42 on his jersey?"); 
    if (jersey == 11) System.out.print
    ("Which player wears number 11 on his jersey?"); 
    if (jersey == 6) System.out.print
    ("Which player wears number 6 on his jersey?"); 
    if (jersey == 4) System.out.print
    ("Which player wears number 4 on his jersey?"); 
    
    
    
    if (name.equals ("Dean")) { System.out.print
    ("What number does Dean wear?");
    }; 
    if (name == "Alleyne") System.out.print
    ("What number does Alleyne wear"); 
    if (name == "Shaw") System.out.print
    ("What number does Shaw wear"); 
    if (name == "Costes") System.out.print
    ("What number does Costes wear"); 
}
}

标签: java

解决方案


在您的示例中,我们使用 switch 而不是数千个 if 语句,在 java 中,您应该始终对对象使用 .equals 方法。只有像 int double char 等原语是“==”安全的。

public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);
    System.out.print( "Type 1 to enter a number or 2 to enter a name: " ) ;
    int number = scanner.nextInt() ;
    System.out.print("Enter player ");
    switch (number){
      case 1:
        System.out.println("number: ");
        switch (scanner.nextInt()){
          case 42: System.out.print
              ("Which player wears number 42 on his jersey?");
          break;
          case 11: System.out.print
              ("Which player wears number 11 on his jersey?");
          break;
          case 6: System.out.print
              ("Which player wears number 6 on his jersey?");
          break;
          case 4: System.out.print("Which player wears number 4 on his jersey?");
          break;
        }
        break;
      case 2:
        System.out.println("name: ");
        switch (scanner.nextLine()){
          case "Dean": System.out.print
              ("What number does Dean wear?");
          break;
          case "Alleyne":
            System.out.print
                ("What number does Alleyne wear");
            break;
          case "Shaw":
            System.out.print
                ("What number does Shaw wear");
            break;
          case "Costes":
            System.out.print
                ("What number does Costes wear");
            break;
        }
        break;
      default: throw new IllegalArgumentException("invalid input");
    }

  }

推荐阅读