0

我正在尝试创建一个程序,该程序接受用户输入的两个单词并确定这些单词是否相同。

import java.util.Scanner;
public class L7E3 {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System. in );
        String word1, word2;

        System.out.println("Please enter a word: ");
        word1 = keyboard.nextLine();
        System.out.println("Please enter a word: ");
        word2 = keyboard.nextLine();

        if (word1 == word2) {
            System.out.println("The words are " + word1 + " and " + word2 + ". These words are the same.");
        } else {
            System.out.println("The words are " + word1 + " and " + word2 + ". These words are not the same.");
        }
    }
}

我认为 word1==word2 可以确定两个字符串是否相等,我使用的是 JGrasp,无论输入如何,它都会直接进入我的 else 选项。我对字符串做错了吗?

4

3 回答 3

0

对于字符串,您需要使用.equals()函数而不是==相等运算符。

if(word1.equals(word2))

如果您想测试两个单词是否相同,同时忽略大小写(“This”与“this”相同),那么您需要执行以下操作:

if (word1.toLowerCase().equals(word2.toLowerCase()))

同样在您的具体示例中,您可能希望从单词前后删除不必要的空格(“word1”应该变为“word1”)。您可以使用以下trim()功能执行此操作:

word1 = word.trim();

于 2013-10-30T01:25:28.543 回答
0
if(word1.equals(word2))

==不做你认为它做的事。 ==本质上比较两个String变量的内存位置,并且true仅当它们位于相同的内存位置时才返回。该String.equals方法比较字符串的内容,true如果它们包含相同的字符,则返回。

于 2013-10-30T01:22:35.687 回答
0

简短的回答:String#equals(Object)改用:

word1.equals(word2)

有关原因的超级详细解释:查看.

于 2013-10-30T01:23:28.827 回答