-1

重複の可能性:
Javaで文字列を比較するにはどうすればよいですか?

私は「サイコロを振る」プログラムを書き、ヤーツェーを得るのに何ターンかかるかを教えてくれます。これは機能しますが、もう一度行くように求められると問題が発生します。実際にループを終了する必要があるものを入力すると、「無効な入力」が表示され続けます。これが私のコードです。ループは24〜34行目から始まりますが、以前に問題が発生した場合に備えて、すべてを配置します。

import java.util.Scanner;
import java.util.Random;

public class Yahtzee {

public static void main(String[] args){

    int d[] = {0,0,0,0,0};
    int x = 0;
    Scanner s = new Scanner(System.in);
    Random r = new Random();

    while (1!=0){
        d[0] = r.nextInt(6);
        d[1] = r.nextInt(6);
        d[2] = r.nextInt(6);
        d[3] = r.nextInt(6);
        d[4] = r.nextInt(6);
        x+=1;

        if (d[0]==d[1] && d[0]==d[2] && d[0]==d[3] && d[0]==d[4]) {
            System.out.println("You got yahtzee, every dice showed " + Integer.toString(d[0]));
            System.out.println("It only took " + Integer.toString(x) + " turns");
            while (1!=3) {
                System.out.print("Go again? y/n: ");
                String ans = s.nextLine();
                if (ans.toLowerCase()=="n"){
                    System.exit(0);
                } else if (ans.toLowerCase()=="y") {
                    break;
                } else {
                    System.out.println("Invalid input!");
                }
            }

        }   
    }   
}   
}

おそらく信じられないほど明白ですが、私は正直にこれを理解することはできません。問題はどこだ?

4

3 に答える 3

3

.equals等式演算子ではなく、文字列を比較するために使用します==

if (ans.toLowerCase().equals("n")){
    System.exit(0);
} else if (ans.toLowerCase().equals("y")) {

等式演算子は、メモリ位置が等しいことだけをチェックしますが、この場合はそうではありません。

于 2012-10-04T00:32:21.873 に答える
1

String.equals文字列の内容を確認するために使用します。演算子は参照の==同等性に依存しているため、最初の2つのifステートメント式は決してtrue。あなたが持つことができます:

if (ans.toLowerCase().equals("n")) {
   System.exit(0);
} else if (ans.toLowerCase().equals("y")) {
   break;
} else {
   System.out.println("Invalid input!");
}
于 2012-10-04T00:31:27.130 に答える
0

前の答えは両方とも正しいので、Stringクラスの.equalsメソッドを使用する必要があります。

プログラムの==演算子は、実際には、文字列の内容ではなく、2つの文字列オブジェクト参照を比較しています。

これは、Javaを使い始めた人にとってはかなり一般的な間違いです。

詳細については、こちらを参照してください:http ://www.java-samples.com/showtutorial.php?tutorialid=221

于 2012-10-04T00:39:49.687 に答える