它只是我的第二个程序与java和我遇到一些问题。 我正在尝试从用户那里得到输入,无论是或否,然后基于那个转到if else状态。继承人到目前为止我所拥有的
String answer= UI.askString("Do you want to continue?");
if(answer=="yes"){
UI.println("Lets go");
}
else if(answer == "no"){
UI.println("Thank you. Goodbye");
}
else{
UI.println("Please enter yes or no");
}
我想也许更好地使用布尔呢? 非常感谢任何帮助!
(如果你想知道,它是一个自定义导入因此在某些行中有奇怪的语法)
干杯。
答案 0 :(得分:1)
当您将Java中的两个Strings
与==
运算符进行比较时,会比较它们以查看它们是否是同一个对象,而不是它们是否包含相同的文本。因此,您可以键入" yes",当您使用if (answer == "yes")
时,比较失败,因为您从UI.askString
返回的对象是另一个对象,存储在另一个位置内存,而不是编译器从文字String
生成的"yes"
。
要比较两个字符串的值,您需要编写answer.equals("yes")
或"yes".equals(answer)
。任何一个都可以使用,并将调用equals
类的String
方法,该方法将比较实际文本。
后一种语法"yes".equals(answer)
经常被推荐,因为它不会导致NullPointerException
,即使变量answer
设置为null。这是因为equals
方法处理null并且只返回false。另一方面,如果您使用answer.equals("yes")
表单并且answer
为null,那么您将尝试在null上调用方法并抛出异常。
答案 1 :(得分:0)
您要找的是一个对话框。这是带有代码的oracle示例。这比我在这里写的更多。有大量的肯定,没有框和用户输入的检测。
http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html
快速回答:
int dialogResult = JOptionPane.showConfirmDialog (null, "Would You Like to Save your Previous Note First?","Warning",dialogButton);
if(dialogResult == JOptionPane.YES_OPTION){ ... }
其他选择......
YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION, and CLOSED_OPTION
对于命令行程序,您需要...
import java.util.Scanner;
代码看起来像......
Scanner in = new Scanner(System.in);
String line = in.nextLine();
//ask them to write yes, no, whatever
if(line.equal("yes"){ }
else if (line.eqals("no") {}
else {}
答案 2 :(得分:0)
使用MikeG010590的答案,你可以尝试:
Scanner in = new Scanner(System.in);
String line;
System.out.println("you want to continue?");
Boolean exit = null;
do {
line = in.nextLine();
switch (line) {
case "yes":
exit = false;
break;
case "no":
exit = true;
break;
default:
System.out.println("Please enter yes or no");
break;
}
}
while (exit == null);
System.out.println(exit ? "Thank you. Goodbye" : "Lets go");