0

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

以下代码旨在以适当的方式问候用户:

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

问题询问为什么程序可能无法按照程序员的意图进行。目前缺少笔记本电脑(洒了饮料!)我无法使用不同的输入等测试代码。据我所知,唯一的问题是它不会向用户询问另一个如果它是空白的,则输入名称,并终止程序。我会用这个作为答案,但稍后会直接在问题中提出,这让我认为这不是他们正在寻找的答案。代码还有其他问题吗?

4

9 回答 9

2

另一个String.equals问题,替换:

if (name == "" )

if (name.equals(""))

运算符比较==对象引用,您需要使用String.equals比较String内容。或者,您可以使用:

if (name.IsEmpty())
于 2012-12-17T18:39:00.487 回答
1

改变:

if (name == "" )

到:

if (name.equals(""))
于 2012-12-17T18:38:48.143 回答
1

它使用== ""而不是.equals(""),或者更好的是,.isEmpty()

于 2012-12-17T18:38:57.623 回答
1

使用String#equals(), not==来检查字符串是否相等。

于 2012-12-17T18:39:01.617 回答
1

唯一的问题是String comparison使用==运算符。那不会给出预期的结果。==运算符比较String Reference值,而不是内容。

equals如果目的是比较字符串,则应始终使用方法进行字符串比较contents

于 2012-12-17T18:39:01.657 回答
1

您应该使用 equals() 方法检查字符串是否相等。==字符串情况下的运算符只检查两个字符串是否引用同一个字符串对象

 if (name == "" )

should be

 if (name.equals("") )

或者您也可以使用String.isEmpty()检查字符串是否为空

 if (name.isEmpty())
于 2012-12-17T18:39:02.807 回答
0

它将字符串与==而不是进行比较.equals()

==比较对象引用。它不匹配两个字符串的内容。

于 2012-12-17T18:39:29.830 回答
0

问题是,你不能用字符串做 == 。您必须使用方法 name.equals

于 2012-12-17T18:44:39.757 回答
0

对不起,我不能留下评论。1.那么,您在编写该程序时的意思是终止?我认为,它应该打印两个“println()”之一 - 哪个?2. Mybee你应该插入一些排序循环“while”,直到用户输入非空字符串:

while (!name.equals("")) { ... }

PS。对不起,我不能留下评论,我看到没有任何批准的答案......

于 2012-12-17T20:53:47.993 回答