-2

重複の可能性:
Java 文字列比較?

こんばんは。次のコードではエラーは発生しませんが、入力された文字列を検証しようとすると、 toUpperCase() メソッドを使用した場合でも、常に「YES」を入力していないと見なされます。これは非常に基本的なエラーに違いありませんが、この言語の基礎を学んでいるので、今は理解できません。コードは次のとおりです。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main{

    public static void main(String[] args) throws IOException{

        byte counter = 1;
        boolean myCondition = false;
        String answer;
        List<String> myList = new ArrayList<String>();
        BufferedReader objReader = new BufferedReader(new InputStreamReader(System.in));

        do{
            System.out.println("Enter the #" +counter +" person's name:");
            myList.add(objReader.readLine());
            counter++;
            System.out.println("Would you like to add another name to the list? yes/no");
            answer = objReader.readLine();
            if (answer.toUpperCase() == "YES"){
                myCondition = true;
            }

        } while (myCondition);

        System.out.println("The list of names you entered, looks like this:\n");
        for (String name: myList)
            System.out.println(name);

        System.out.println("\nPress <Enter> to randomize the list of names you entered.");
        objReader.readLine();
        Collections.shuffle(myList);

        System.out.println("Done! \nPress <Enter> to see how the randomized list looks like.\n");
        objReader.readLine();
        for(String nombre: myList)
            System.out.println(nombre);

    }

}

ヘルプやヒントをお寄せいただきありがとうございます。

4

1 に答える 1

0

文字列を比較するときは、== の代わりに .equals() メソッドを使用する必要があります。

answer.toUpperCase().equals("YES")

これは、Java プログラミングを開始するときにほとんどの人が犯すエラーであるという点で安心できます:)

于 2012-05-16T07:32:21.767 に答える