黑马程序员技术交流社区
标题:
主函数中String[] args 接收的数值判断不出来?
[打印本页]
作者:
郭孟涛
时间:
2013-3-12 16:26
标题:
主函数中String[] args 接收的数值判断不出来?
String[] args 当传入的数值等于“abc"的时候,为什么还是不能符合条件
class StringDemo
{
public static void main(String[] args)
{
for (int a =0;a<args.length;a++)
{
if (args[a] == "abc")
{
System.out.println("args["+a+"]:"+"密码正确");
}
System.out.println("args["+a+"]="+args[a]);
}
}
}
复制代码
输出结果始终无法运行到“密码正确”一句。
作者:
丁一
时间:
2013-3-12 16:34
先遍历一下 args[] 看看是不是真的传进来了,
作者:
黑马吕世成
时间:
2013-3-12 16:35
你的判断条件有问题,不应该是 “==”改为equals就可以了。这个就是String类的 == 与equals的区别了,不知道你视频看到哪里了,里面有的。
作者:
丁一
时间:
2013-3-12 16:36
刚开始学 主函数中String[] args 这个值是在哪里传来的,运行的时候不是应该在这个地方开始吗?
作者:
马甲大王
时间:
2013-3-12 16:37
这个很简单的,
解决办法
你把 if (args[a] == "abc")
换成
if (args[a] .equals("abc"))
就ok了,
因为==比较的是两个对象是否相等,而equals比较的是内容。
作者:
熊冠银
时间:
2013-3-12 16:43
我去,我刚看出答案,刷新一下已经被解决了,无语中。。
原因跟楼上一样,是==和equals的问题,不过要改写成
if("abc".equals(args[a]))
否则发生空指针异常
作者:
HM李帅
时间:
2013-3-12 16:46
应该把if (args[a] == "abc")
改为if ("abc".equals(args[a] ))
由于==是比较地址
而string的equals被底层重写为是比较值是否相等了
所以这里改为equals就好了
而且最好把"abc"放在前面
因为如果把args[a] 放在前面
当没有参数的时候会出现空指针
当然对这道题是没有影响的 因为没有值进不了循环
但这是好的编程习惯{:soso_e179:}
作者:
冷叙辰
时间:
2013-3-12 17:48
你那个判断条件错了,字符串的比较怎么能用==呢,应该写成if("abc".equals(args[a]))
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2