只是查看过去的考试试卷,偶然发现了以下对我没有多大意义的问题:
以下代码旨在以适当的方式迎接用户:
public static void main( String[] args ) {
System.out.println("Enter a name");
String name = EasyIn.getString();
if (name == "" )
System.out.println("You must input a name");
else
System.out.println("Hello, " + name);
}
问题是为什么程序可能不会执行程序员的意图。目前缺少一台笔记本电脑(上面有饮料!)我无法用不同的输入等来测试代码。据我所知,唯一的问题是它不会要求用户提供另一个输入名称,如果它是空白的,只是终止程序。我会用这个作为答案,但它会在问题的后期直接提出,这让我觉得这不是他们正在寻找的答案。代码还有其他问题吗?
答案 0 :(得分:2)
另一个String.equals
问题,请替换:
if (name == "" )
与
if (name.equals(""))
==
运算符会比较对象引用,您需要使用String.equals
来比较String
内容。或者你可以使用:
if (name.IsEmpty())
答案 1 :(得分:1)
变化:
if (name == "" )
为:
if (name.equals(""))
答案 2 :(得分:1)
它使用== ""
代替.equals("")
,或者更好,.isEmpty()
。
答案 3 :(得分:1)
使用String#equals()
而不是==
来检查字符串相等性。
答案 4 :(得分:1)
唯一的问题是String comparison
使用==
运算符。这不会产生预期的结果。 ==
运算符会比较String Reference
值,而不是内容。
如果要比较字符串的equals
,则应始终使用contents
方法进行字符串比较。
答案 5 :(得分:1)
您应该使用equals()方法检查字符串相等性。如果是字符串,==
运算符只检查两个字符串是否引用相同的字符串对象
if (name == "" )
should be
if (name.equals("") )
或者您也可以使用String.isEmpty()来检查字符串是否为空
if (name.isEmpty())
答案 6 :(得分:0)
它会将字符串与==
而不是.equals()
进行比较。
==
比较对象引用。它不会主持两个字符串的内容。
答案 7 :(得分:0)
问题是,你不能用字符串做==。您必须使用方法name.equals
答案 8 :(得分:0)
抱歉,我不能留下评论。 那么,当你写这个程序时,你的意思是什么呢?我想,它应该打印两个“println()”中的一个 - 哪个? 2. Mybee你应该插入一些“while”循环,这将运行直到用户输入非空字符串:
while (!name.equals("")) { ... }
PS。对不起,我不能留下评论&我看到没有任何批准的答案......