Java编程中的一个问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 18:40:38
有这样一段程序:
for (int i=1;i<1000;i++)
{
String a=JOptionPane.showInputDialog;
if (a=="yes")
System.out.println("a");
else
System.out.println("b");
}
(方法,类名等皆略去。该程序已通过编译,如以上语句有错为输入错误)
由于String的字符串之间不能比较,因此无论输入什么,显示的都是 b 。
如何修改这段程序使输入yes时电脑给出 a 的回应?
使用char的话是不是赋给变量a的值只能是一个字符?
望高手回答,最好能够给予正确的代码

“==”比较的地址。
equals比较的才是字符串的内容。
用a.equals("yes")

for (int i=1;i<1000;i++)
{
String a=JOptionPane.showInputDialog;
if (a.equals"yes")
System.out.println("a");
else
System.out.println("b");
}

将a=="yes"
修改为"yes".equals(a);
工程上常用这种方法避免空指针异常,也就是说NullPointException.
假如你什么都不输入的话运行试试看会不会抛出异常。

另外参考2楼解释

最好写成
if("yes".equals(a))
要养成一个好习惯

a.equals"yes" 容易报空指针异常

说实话,看不是太懂你的意思
想跟你说的是,字符串比较,最好不要用==,因为这样指向的是同一个对象,而其实是不一定的,所以要用"yes".equal(a)
多个char转String,我暂时想不出什么好办法,只想到土办法,先把所有char都放到char[]中,然后String.valueOf(char[]),这样就可以转成String了,然后后面处理你应该是知道的

a.equals"yes"