如何让 Java 扫描仪实用程序输入两次
How to get the Java Scanner utility to input twice
这是我的代码
public class Practice01{
public static void main (String[] args){
System.out.println("Hi there");
Scanner scr = new Scanner(System.in);
String response = scr.nextLine();
if (response.equalsIgnoreCase("hello") || response.equalsIgnoreCase("hi") || response.equalsIgnoreCase("hey")) {
System.out.println("Oh, well arent you well-mannered. Hello there, how are you?");}
else {
System.out.println("Invalid Input");
String responseG;
responseG = scr.nextLine();
if (responseG.equalsIgnoreCase("good")) {
System.out.println("Glad to hear");
}
}
}
}
我对 java 有点菜鸟,我今天才开始,但是在这里的 else 语句之后,java 由于某种原因自行终止,它只是不关心其余的代码。我在网上查看时发现,如果您想使用 .nextLine();
函数进行另一个输入(我不认为它称为函数,但您知道我的意思)但是在我输入 hey、hello 或 hi 之后,它会打印“哦,你是不是很有礼貌。你好,你好吗?”然后我无法输入任何其他内容,它显示 < terminated > 。谁能帮忙?谢谢
编辑:显然我应该将“responseG”变量和下一行移动到 if 语句中。当我这样做时,它不会激活(使用 eclipse IDE,它只是显示为白色和错误)并告诉我删除其他内容。 https://gyazo.com/1a27fa9ab8802d594cccb35ecc0cb663 发生的事情的图片。此外,如果我尝试使用 else if 语句,它还会说要删除它
您必须使用循环来保持程序运行。在你得到“哦,你好吗 well-mannered。你好,你好吗?”打印出来,它终止了没有更多任务要做的事实。
您好,欢迎来到 Whosebug!
如果您不输入“hello”或“Hello”或“hey”,您的程序将只要求从键盘输入另一个输入,你知道我的意思.如果你输入“hello”然后它会打印一行
"Oh, well aren't you well-mannered. Hello there, how are you?"
程序将终止...
这就是您的代码告诉程序要做的事情,因为您只是在 else 语句的主体中请求另一个输入。
如我所见,您不想使用 for 循环,因为您似乎只关心一条路径,上面写着你好……你好吗?……很好……很高兴听到这个消息。 .. 但如果你喜欢它,你可以使用 while()
语句或 do..while()
或 for()
使其在变量中保存许多响应 scr.nextLine();
函数(它 是 一个函数),在这种情况下你必须定义 when/how 程序将停止请求输入并将终止。
我相信这就是您想要做的,缩进正确,并且没有声明不必要的变量:
public class Practice01{
public static void main (String[] args){
System.out.println("Hi there");
Scanner scr = new Scanner(System.in);
String response = scr.nextLine();
if (response.equalsIgnoreCase("hello") || response.equalsIgnoreCase("hi") || response.equalsIgnoreCase("hey")) {
System.out.println("Oh, well arent you well-mannered. Hello there, how are you?");
}
else {
System.out.println("Invalid Input");
}
//You don't need ResponseG... you've already created the response variable
response = scr.nextLine();
if (response.equalsIgnoreCase("good")) {
System.out.println("Glad to hear");
}
else {
System.out.println("Invalid Input");
}
}
}
因此,您要做的是将 ResponseG if 语句移动到您的响应 if 语句中,因为这会阻止代码完成,因为您输入了正确的输入。另外为了以后的项目,为了更有条理,在代码的开头创建变量。
public class Practice01{
public static void main (String[] args){
System.out.println("Hi there");
String responseG;
Scanner scr = new Scanner(System.in);
String response = scr.nextLine();
if (response.equalsIgnoreCase("hello") ||
response.equalsIgnoreCase("hi") ||
response.equalsIgnoreCase("hey")) {
System.out.println("Oh, well arent you well-mannered. Hello there, how are you?");
responseG = scr.nextLine();
if (responseG.equalsIgnoreCase("good")) {
System.out.println("Glad to hear");
}
} else {
System.out.println("Invalid Input");
}
}
}
这是我的代码
public class Practice01{
public static void main (String[] args){
System.out.println("Hi there");
Scanner scr = new Scanner(System.in);
String response = scr.nextLine();
if (response.equalsIgnoreCase("hello") || response.equalsIgnoreCase("hi") || response.equalsIgnoreCase("hey")) {
System.out.println("Oh, well arent you well-mannered. Hello there, how are you?");}
else {
System.out.println("Invalid Input");
String responseG;
responseG = scr.nextLine();
if (responseG.equalsIgnoreCase("good")) {
System.out.println("Glad to hear");
}
}
}
}
我对 java 有点菜鸟,我今天才开始,但是在这里的 else 语句之后,java 由于某种原因自行终止,它只是不关心其余的代码。我在网上查看时发现,如果您想使用 .nextLine();
函数进行另一个输入(我不认为它称为函数,但您知道我的意思)但是在我输入 hey、hello 或 hi 之后,它会打印“哦,你是不是很有礼貌。你好,你好吗?”然后我无法输入任何其他内容,它显示 < terminated > 。谁能帮忙?谢谢
编辑:显然我应该将“responseG”变量和下一行移动到 if 语句中。当我这样做时,它不会激活(使用 eclipse IDE,它只是显示为白色和错误)并告诉我删除其他内容。 https://gyazo.com/1a27fa9ab8802d594cccb35ecc0cb663 发生的事情的图片。此外,如果我尝试使用 else if 语句,它还会说要删除它
您必须使用循环来保持程序运行。在你得到“哦,你好吗 well-mannered。你好,你好吗?”打印出来,它终止了没有更多任务要做的事实。
您好,欢迎来到 Whosebug!
如果您不输入“hello”或“Hello”或“hey”,您的程序将只要求从键盘输入另一个输入,你知道我的意思.如果你输入“hello”然后它会打印一行
"Oh, well aren't you well-mannered. Hello there, how are you?"
程序将终止...
这就是您的代码告诉程序要做的事情,因为您只是在 else 语句的主体中请求另一个输入。
如我所见,您不想使用 for 循环,因为您似乎只关心一条路径,上面写着你好……你好吗?……很好……很高兴听到这个消息。 .. 但如果你喜欢它,你可以使用 while()
语句或 do..while()
或 for()
使其在变量中保存许多响应 scr.nextLine();
函数(它 是 一个函数),在这种情况下你必须定义 when/how 程序将停止请求输入并将终止。
我相信这就是您想要做的,缩进正确,并且没有声明不必要的变量:
public class Practice01{
public static void main (String[] args){
System.out.println("Hi there");
Scanner scr = new Scanner(System.in);
String response = scr.nextLine();
if (response.equalsIgnoreCase("hello") || response.equalsIgnoreCase("hi") || response.equalsIgnoreCase("hey")) {
System.out.println("Oh, well arent you well-mannered. Hello there, how are you?");
}
else {
System.out.println("Invalid Input");
}
//You don't need ResponseG... you've already created the response variable
response = scr.nextLine();
if (response.equalsIgnoreCase("good")) {
System.out.println("Glad to hear");
}
else {
System.out.println("Invalid Input");
}
}
}
因此,您要做的是将 ResponseG if 语句移动到您的响应 if 语句中,因为这会阻止代码完成,因为您输入了正确的输入。另外为了以后的项目,为了更有条理,在代码的开头创建变量。
public class Practice01{
public static void main (String[] args){
System.out.println("Hi there");
String responseG;
Scanner scr = new Scanner(System.in);
String response = scr.nextLine();
if (response.equalsIgnoreCase("hello") ||
response.equalsIgnoreCase("hi") ||
response.equalsIgnoreCase("hey")) {
System.out.println("Oh, well arent you well-mannered. Hello there, how are you?");
responseG = scr.nextLine();
if (responseG.equalsIgnoreCase("good")) {
System.out.println("Glad to hear");
}
} else {
System.out.println("Invalid Input");
}
}
}