这段java代码出了什么问题?

时间:2012-12-17 18:37:21

标签: java

只是查看过去的考试试卷,偶然发现了以下对我没有多大意义的问题:

以下代码旨在以适当的方式迎接用户:

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);
}

问题是为什么程序可能不会执行程序员的意图。目前缺少一台笔记本电脑(上面有饮料!)我无法用不同的输入等来测试代码。据我所知,唯一的问题是它不会要求用户提供另一个输入名称,如果它是空白的,只是终止程序。我会用这个作为答案,但它会在问题的后期直接提出,这让我觉得这不是他们正在寻找的答案。代码还有其他问题吗?

9 个答案:

答案 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。对不起,我不能留下评论&我看到没有任何批准的答案......