Java 无法识别扫描仪输入
Java doesnt recognize scanner input
import java.util.Scanner;
public class SimCompanies {
public static void main(String[] args) {
Scanner scanner = new Scanner (System.in);
boolean x=true;
String complete = new String(":fire: Buying DAILY :fire:\n");
while (x==true) {
String input = scanner.next();
if (input == "0") {
System.out.println(complete);
x=false;
}
else {
complete += extend(input);
}
}
}
public static String extend(String a) {
return new String(
":" + a + ": " + ":" + a + ": " + ":" + a + ": " + ":" + a + ": \n" );
}
我想编写一个可以处理输入的程序。对于新行中的每个输入,它都应接受输入并执行“扩展”功能。我尝试了很多,发现它与函数配合得很好(因此无论我有多少输入,它都能正确处理输入)。但是我想在写“0”时停止程序。但是程序没有看到我在写“0”。它总是进入 else 语句,但永远不会进入 if 语句。
重要的是,最后应打印出所有内容。那我做错了什么?
我想要这个在最后(输入:Satellite, Jet)
:fire: Buying DAILY :fire:
:Satellite: :Satellite: :Satellite: :Satellite:
:Jet: :Jet: :Jet: :Jet:
这里的问题是您尝试比较的不是字符串内容,而是它的实例引用。您想要的是比较字符串值。
修改while
循环中的if
语句,如下是解决问题的可能方案:
while (x==true) {
String input = scanner.next();
if (input.equals("0")) {
System.out.println(complete);
x=false;
}
else {
complete += extend(input);
}
}
或使用:
if (input.compareTo("0") == 0) {
input/output 的一个例子是:
fire
Satellite
Jet
0
:fire: Buying DAILY :fire:
:fire: :fire: :fire: :fire:
:Satellite: :Satellite: :Satellite: :Satellite:
:Jet: :Jet: :Jet: :Jet:
字符串不是原始字符串,因此您不能使用相等运算符 (==) 与另一个字符串进行比较。
要比较 2 个字符串,只需使用已在 Java.
中作为字符串 API 的一部分提供的 .equals() 方法
即
input.equals("0")
import java.util.Scanner;
public class SimCompanies {
public static void main(String[] args) {
Scanner scanner = new Scanner (System.in);
boolean x=true;
String complete = new String(":fire: Buying DAILY :fire:\n");
while (x==true) {
String input = scanner.next();
if (input == "0") {
System.out.println(complete);
x=false;
}
else {
complete += extend(input);
}
}
}
public static String extend(String a) {
return new String(
":" + a + ": " + ":" + a + ": " + ":" + a + ": " + ":" + a + ": \n" );
}
我想编写一个可以处理输入的程序。对于新行中的每个输入,它都应接受输入并执行“扩展”功能。我尝试了很多,发现它与函数配合得很好(因此无论我有多少输入,它都能正确处理输入)。但是我想在写“0”时停止程序。但是程序没有看到我在写“0”。它总是进入 else 语句,但永远不会进入 if 语句。 重要的是,最后应打印出所有内容。那我做错了什么?
我想要这个在最后(输入:Satellite, Jet)
:fire: Buying DAILY :fire:
:Satellite: :Satellite: :Satellite: :Satellite:
:Jet: :Jet: :Jet: :Jet:
这里的问题是您尝试比较的不是字符串内容,而是它的实例引用。您想要的是比较字符串值。
修改while
循环中的if
语句,如下是解决问题的可能方案:
while (x==true) {
String input = scanner.next();
if (input.equals("0")) {
System.out.println(complete);
x=false;
}
else {
complete += extend(input);
}
}
或使用:
if (input.compareTo("0") == 0) {
input/output 的一个例子是:
fire
Satellite
Jet
0
:fire: Buying DAILY :fire:
:fire: :fire: :fire: :fire:
:Satellite: :Satellite: :Satellite: :Satellite:
:Jet: :Jet: :Jet: :Jet:
字符串不是原始字符串,因此您不能使用相等运算符 (==) 与另一个字符串进行比较。
要比较 2 个字符串,只需使用已在 Java.
中作为字符串 API 的一部分提供的 .equals() 方法即
input.equals("0")