use*_*303 2 java swing if-statement equals joptionpane
我是编程的新手 - 我正在学习Java.我正在尝试使用JOptionPane来处理if/else语句.除了陈述之外,一切正常.我只得到声明"停止并获取燃气!" 无论输入什么答案(是或否).
任何帮助,将不胜感激!
//This program determine if I have to stop for gas on the way in to work.
import javax.swing.JOptionPane;
import java.util.*;
public class GasIndicator
{
public static void main(String[] args)
{
String answer;
String outputStr1;
String outputStr2;
answer =
JOptionPane.showInputDialog ( "Do you have at least an eighth tank of gas? yes or no " );
outputStr1 = "You can drive straight to work";
outputStr2 = "Stop and get gas!";
if (answer == "yes")
JOptionPane.showMessageDialog(null, outputStr1, "Gas", JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(null, outputStr2, "Gas", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
if (answer == "yes")
Run Code Online (Sandbox Code Playgroud)
比较String对象时,需要使用该equals方法.
例
if(answer.equals("yes")) {
// Do code.
}
Run Code Online (Sandbox Code Playgroud)
注意:根据评论的建议,将if语句结构如下更安全:
if("yes".equals(answer)) {
// Do code.
}
Run Code Online (Sandbox Code Playgroud)
这将不通过NullPointerExceptionIS answer等于null.
说明
在Java中,当使用==运算符来比较类型的子类时Object,它将检查这两个对象是否是对同一对象的引用.他们不检查该对象的值.因为您正在比较值,所以您需要使用该equals方法.
它如何应用于您的代码
好吧,让我们来看看吧.你String从响应中得到一个类型InputDialog.所以这是一个String.然后尝试将其与之进行比较"yes".这就是所谓的a String literal,所以这意味着在那里创建了一个对象,因此有两个不同的对象.
请记住,在对象的情况下,您要比较引用类型; 不是对象的价值,所以这就是为什么它总是导致的false.
| 归档时间: |
|
| 查看次数: |
20782 次 |
| 最近记录: |