1

我有一个使用数字的类似代码,它工作得很好。然而,这一直强调其他词,我不知道为什么。我只是在玩 java 试图理解一些原则。

我想编程根据输入回复两个语句之一。此外,在它说 的地方if (input1 == "Hello");,我也想 if (input1 == "Hello" || "hello");接受小写,但这也显示了错误。

为了清楚起见,如果我删除 else 子句,我的程序就会运行并打印两个语句!

import java.util.Scanner;

public class Input
{
    public static void main(String[] args) 
    {
    System.out.println("Hello there!");
    Scanner Scan = new Scanner (System.in);
    String input1 = Scan.nextLine();
    Scan.close();

    if (input1 == "Hello");
        {
            System.out.println("How are you?");
        }
        else
            System.out.println("How rude, you didn't even say Hello!");
            break;
        }
    }
}
4

5 回答 5

5

永远不要==用来比较字符串。

改为使用.equals

if (input1.equals("Hello"))

或者

if (input1.equalsIgnoreCase("Hello"))

删除末尾的分号

if (input1 == "Hello");

编辑:- 如您对 OR 的评论所示。

你可以试试这个: -

if(input1.equalsIgnoreCase("hello") || input1.equalsIgnoreCase("hey") || input1.equalsIgnoreCase("hi"))
于 2013-08-18T19:14:56.667 回答
2

删除;if 语句末尾的 。并用于.equals()比较字符串。

分号会导致编译错误,而==一旦运行就会导致逻辑错误。

于 2013-08-18T19:14:12.950 回答
1

你可能不希望分号在行

if (input1 == "Hello");

您也可能实际上不想使用比较==(阅读有关比较字符串的链接问题)。

第三,为什么你的条款中有一个break声明else

于 2013-08-18T19:14:48.087 回答
1

你正在寻找equalsIgnoreCase(). 这将比较两个字符串而不考虑大小写。

于 2013-08-18T19:19:27.553 回答
0

删除;after 你的if语句条件并添加{after else。此外,比较对象时最好使用该equals(Object)方法,因为使用==.

于 2013-08-18T19:19:19.083 回答