Java扫描器:连续循环
当我输入任何有效选项(A、B、C)时,if语句认为该选项不是A、B或C,并将导致一个连续循环Java扫描器:连续循环,java,java.util.scanner,Java,Java.util.scanner,当我输入任何有效选项(A、B、C)时,if语句认为该选项不是A、B或C,并将导致一个连续循环 package other; import java.util.Scanner; public class Menu implements InterfaceMenu{ private String option; public void greeting(){ System.out.println("This program will use the Pythagorean Theo
package other;
import java.util.Scanner;
public class Menu implements InterfaceMenu{
private String option;
public void greeting(){
System.out.println("This program will use the Pythagorean Theorem");
System.out.println("to calculate a missing side.\n");
System.out.println("Choose an option!\n");
System.out.println("Choose Option A for missing side c");
System.out.println("Choose Option B for missing side b");
System.out.println("Choose Option C for missing side a\n");
}
public String optionGet(){
System.out.print("Choose an option: ");
Scanner ad = new Scanner(System.in);
option=ad.next().toUpperCase();
if( (option=="A") || (option=="B") || (option=="C") ){
ad.close();
}
else{
optionGet();
}
return option;
}
}
使用
String.equals()
方法。不是==
比较器。.equals()
检查字符串之间是否相等,=
检查它们的引用是否相同,这不是您想要做的 使用String.equals()
方法。不是==
比较器。.equals()
检查字符串之间是否相等,=
检查它们的引用是否相同,这不是您想要做的 使用String.equals()
方法。不是==
比较器。.equals()
检查字符串之间是否相等,=
检查它们的引用是否相同,这不是您想要做的 使用String.equals()
方法。不是==
比较器。.equals()
检查字符串之间是否相等,=
检查它们的引用是否相同,这不是您想要做的 使用选项。equalsIgnoreCase(“A”)
而不是==。因为==比较引用变量,equals比较内容。使用选项。equalsIgnoreCase(“A”)
而不是==。因为==比较引用变量,equals比较内容。使用选项。equalsIgnoreCase(“A”)
而不是==。因为==比较引用变量,equals比较内容。使用选项。equalsIgnoreCase(“A”)
而不是==。因为==比较引用变量,equals比较内容。除了使用错误的方法比较字符串外,还有另一个严重问题:optionGet()
在系统中打开一个新的扫描仪。如果输入包含的选项不是A、B或C,则optionGet()
递归调用自身。递归调用执行另一个操作
Scanner ad = new Scanner(System.in);
当第一个还开着的时候。目前还不知道这会起什么作用,但很可能会引起问题。不要那样做。不要使用递归。这里不合适。相反,将检查选项的代码放在循环中,并确保新扫描仪
在循环之外。除了使用错误的方法比较字符串外,还有另一个严重问题:optionGet()
在系统中打开一个新的扫描仪
。如果输入包含的选项不是A、B或C,则optionGet()
递归调用自身。递归调用执行另一个操作
Scanner ad = new Scanner(System.in);
当第一个还开着的时候。目前还不知道这会起什么作用,但很可能会引起问题。不要那样做。不要使用递归。这里不合适。相反,将检查选项的代码放在循环中,并确保新扫描仪
在循环之外。除了使用错误的方法比较字符串外,还有另一个严重问题:optionGet()
在系统中打开一个新的扫描仪
。如果输入包含的选项不是A、B或C,则optionGet()
递归调用自身。递归调用执行另一个操作
Scanner ad = new Scanner(System.in);
当第一个还开着的时候。目前还不知道这会起什么作用,但很可能会引起问题。不要那样做。不要使用递归。这里不合适。相反,将检查选项的代码放在循环中,并确保新扫描仪
在循环之外。除了使用错误的方法比较字符串外,还有另一个严重问题:optionGet()
在系统中打开一个新的扫描仪
。如果输入包含的选项不是A、B或C,则optionGet()
递归调用自身。递归调用执行另一个操作
Scanner ad = new Scanner(System.in);
当第一个还开着的时候。目前还不知道这会起什么作用,但很可能会引起问题。不要那样做。不要使用递归。这里不合适。相反,将检查选项的代码放在循环中,并确保新扫描器
在循环之外。在Java字符串中,不能使用=
标识符进行比较,方法与整数相同。相反,您可以使用String.equals()
不过,对于您编写的内容,最好是比较字符,但这需要将optionGet()
中返回的变量类型更改为public char optionGet()
。但是,执行此操作还需要将选项的类型更改为char
。将类型更改为char
将允许您使用==
比较字符
另外,请确保在optionGet()
之外定义Scanner ad
,因为当前代码正在为每次重复重新定义它
调用您认为更容易的内容。在Java字符串中,无法使用=
标识符与整数进行比较。相反,您可以使用String.equals()
不过,对于您编写的内容,最好是比较字符,但这需要将optionGet()
中返回的变量类型更改为public char optionGet()
。但是,执行此操作还需要将选项的类型更改为char
。将类型更改为char
将允许您使用==
比较字符
另外,请确保在optionGet()
之外定义Scanner ad
,因为当前代码正在为每次重复重新定义它
调用您认为更容易的内容。在Java字符串中,无法使用=
标识符与整数进行比较。相反,你可以