这段java代码出了什么问题? [关闭]

问题描述 投票:0回答:9

只是查看过去的试卷,偶然发现以下问题对我来说没什么意义:

以下代码旨在以适当的方式向用户致意:

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

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

java
9个回答
2
投票

另一个String.equals问题,取代:

if (name == "" )

if (name.equals(""))

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

if (name.IsEmpty())

1
投票

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


1
投票

使用String#equals()而不是==来检查字符串相等性。


1
投票

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

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


1
投票

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

 if (name == "" )

should be

 if (name.equals("") )

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

 if (name.isEmpty())

1
投票

更改:

if (name == "" )

至:

if (name.equals(""))

0
投票

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

qazxsw poi比较对象引用。它不会比较两个字符串的内容。


0
投票

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


0
投票

对不起,我不能留下评论。那么,当你写这个程序时,你的意思是什么呢?我想,它应该打印两个“println()”中的一个 - 哪个? 2. Mybee你应该插入一些“while”循环,这将运行直到用户输入非空字符串:

==

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

© www.soinside.com 2019 - 2024. All rights reserved.