如果语句字符串麻烦

时间:2013-10-30 01:21:15

标签: java string

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

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选项。我对字符串做错了吗?

3 个答案:

答案 0 :(得分:0)

if(word1.equals(word2))

==没有按照您的想法行事。 ==基本上比较了两个String变量的内存位置,并且仅当它们位于同一内存位置时才返回trueString.equals方法比较字符串的内容,如果它们具有相同的字符,则返回true

答案 1 :(得分:0)

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

word1.equals(word2)

有关原因的超详细解释:请查看this

答案 2 :(得分:0)

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

if(word1.equals(word2))

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

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

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

word1 = word.trim();