2

重複の可能性:
Java String.equals と ==

nextLine() を使用して文字列を取得し、それをテスト条件として (if ステートメントまたは while ループのいずれかで) 使用するのが困難でした。println() を見ると、文字列が変数 'repeat' に正しく割り当てられているように見えますが、何らかの理由でテスト条件が失敗します。頭を壁にぶつけ、額から出血。助けてください。

import java.util.Scanner;

public class potpie {

    public static void main(String args[]){

        Scanner input = new Scanner(System.in);
        String repeat = "yes";


        System.out.println("Type in yes");
        repeat = input.nextLine();
        System.out.println("If repeat is now yes, print yes:  " +repeat);

        if(repeat == "yes"){
            System.out.println("It worked");
        } else
            System.out.println("it failed");
    }
}
4

3 に答える 3

2

等号を使用する必要があります。==平等を参照し、平等をequals評価します。

if("yes".equals(repeat)){ 

それ以外の

if(repeat == "yes"){

eclipse/net Bean を入手してデバッグを開始することをお勧めします。そうしないと、単純な検索で答えが得られます。

Java Debugging with Eclipse - Tutorial

于 2012-10-31T20:39:36.410 に答える
1
if(repeat == "yes"){

する必要があります

if(repeat.equals("yes"){

(また)

 if("yes".equals(repeat){

毎日この質問を何度も目にしますが、単純な検索で十分な情報が得られたはずです。

==equals はプリミティブ比較 (参照の等価性) を表します。equals()文字列(または)オブジェクトの比較(オブジェクトの内容が等しい)用です。

于 2012-10-31T20:39:13.247 に答える
1

オブジェクトに対して == を使用する必要がある場合もありますが、実際に比較しているのは、a と b が文字通り同じオブジェクトであるかどうか (メモリ内で同じアドレスを持っているかどうか) です。他の人が言ったように、この状況ではコンテンツを比較しているので、 .equals() を使用します

于 2012-10-31T20:45:38.210 に答える