我正在使用扫描程序方法让用户输入字符串中的一个单词,但即使用户输入其中一个字符串,else仍然在执行。我该如何预防?
public static void main(String[] args) {
while(true) {
StringBuffer StringBuffer = new StringBuffer();
Scanner input = new Scanner(System.in);
System.out.println("Hi, what are you trying to find?");
System.out.println("mass");
System.out.println("vol");
System.out.println("temp");
System.out.println("sphere");
System.out.println("density");
String convert = input.nextLine();
if (String.valueOf(convert).contains("mass, volume, sphere, temp, density, pound, ounce, ton, gram,")) {
StringBuffer.append(String.valueOf(convert));
} else {
System.out.println("Wrong input. Try again.");
}
}
}
答案 0 :(得分:1)
反过来,在你的变种字符串上调用contains
。正如Clone Talk提到的那样,您不需要String.valueOf
,因为convert
已经是String
(尽管如此,它也适用于它。):
public static void main(String[] args) {
while (true) {
StringBuffer StringBuffer = new StringBuffer();
Scanner input = new Scanner(System.in);
System.out.println("Hi, what are you trying to find?");
System.out.println("mass");
System.out.println("vol");
System.out.println("temp");
System.out.println("sphere");
System.out.println("density");
String convert = input.nextLine();
if ("mass, volume, sphere, temp, density, pound, ounce, ton, gram,".contains(convert)) {
StringBuffer.append(convert);
} else {
System.out.println("Wrong input. Try again.");
}
}
}
发表评论:
为什么
if(convert.contains("...."))
不起作用?
最简单的方法是查看the documentation of String.contains
:当且仅当此字符串包含指定的char值序列时才返回true 。
此字符串为convert
,可以是"mass"
或{ {1}}等等;
指定的char值序列是长字符串"volume"
。
那么,例如, "mass, volume, ..."
可以包含"mass"
?确实是另一种方式:"mass, volume, etc."
HashSet.contains会更高效
在这个例子中,字符串看起来不会大到足以感觉到性能提升,但一般来说这是一个好点,特别是如果可能的输入数量不小以及可读性和可维护性。你可以这样:
"mass, volume, etc.".contains("mass") == true