目前正致力于一个简单的系统。 if else语句不会影响任何内容。 这是代码:
tollRate()
{
JFrame a = new JFrame();
setTitle("Highway Toll Rates System");
setSize(600, 400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(5, 2));
p1.setLayout(new GridLayout(1, 2));
p1.add(L1);
p1.add(t1);
p2.setLayout(new GridLayout(1, 2));
p2.add(L2);
p2.add(t2);
p3.setLayout(new GridLayout(1, 2));
p3.add(L3);
p3.add(t3);
p4.setLayout(new FlowLayout());
p4.add(b1);
p4.add(b2);
p5.setLayout(new FlowLayout());
p5.add(L4);
add(p1); add(p2); add(p3); add(p4); add(p5);
b1.addActionListener(this);
b2.addActionListener(this);
}
public void actionPerformed(ActionEvent a)
{
Object source = a.getSource();
if(source == b2)
{
this.dispose();
}
else if(source == b1)
{
i = t1.getText();
j = t2.getText();
k = t3.getText();
if (i!=SUNGAI BULOH)
{
JOptionPane.showMessageDialog(null, "Invalid Location" );
}
}
}
public static void main(String[] args)
{
tollRate a = new tollRate();
}
}
任何人都可以帮助我使用此代码中的if else语句吗?如果用户在i中键入“SUNGAI BULOH”以外的任何内容,我希望系统显示“无效位置”。 提前谢谢。
答案 0 :(得分:4)
Alaways使用String#equals()
来比较字符串。等于运算符==
仅比较引用,即使两个对象的内容有意义相等,也可能导致 false 。
if (i!= null && !i.equals("SUNGAI BULOH")) // notice "quotes"
{
JOptionPane.showMessageDialog(null, "Invalid Location" );
}
另请注意,文字字符串始终用Java中的"double"
引号括起来。没有它们,编译器实际上会将它们视为Java标识符。
答案 1 :(得分:2)
如果您正在执行字符串比较,则应使用此
if ( !"SUNGAI BULOH".equalsIgnoreCase(i) ){
// do stuff
}
由于“equals”比较两个字符串,而“equalsIgnoreCase”做同样的事情,忽略大小写。
答案 2 :(得分:2)
在Java中比较Object
时,==
不会比较变量的值,而是比较引用。所以以下内容将返回false:
string s1 = "Hello";
string s2 = "Hello";
return s1==s2;
但这会回归真实:
string s1 = "Hello";
string s2 = s1;
return s1==s2;
每个Object
都有一个equals()
方法,对于每个子类,应该重写该方法以比较对象中的实际值。所以以下内容将返回true:
string s1 = "Hello";
string s2 = "Hello";
return s1.equals(s2);
但是,你必须小心空指针 - 如果s1
(在上面的例子中)是null
,它将抛出异常,所以你应该首先检查null,就像这样:
return s1 != null && s1.equals(s2);
由于&&
的工作方式,如果前半部分为假,则不会评估表达式的后半部分。所以它会在没有命中空指针异常的情况下返回false。
答案 3 :(得分:1)
我甚至不确定这是如何编译的......
以下是我要测试代码的方法:
public void actionPerformed(ActionEvent a) {
Object source = a.getSource();
if(source == b2) {
System.out.println("b1 selected");
this.dispose();
} else if(source == b1) {
System.out.println("b2 selected");
i = t1.getText();
j = t2.getText();
k = t3.getText();
System.out.println("i text: " + i);
if (!"SUNGAI BULOH".equalsIgnoreCase(i)) {
JOptionPane.showMessageDialog(null, "Invalid Location" );
}
}
如果t1
包含空值,这将避免空指针异常。你的变量名很糟糕。