-4

ファイル explicit.txt に abazure という単語しかない場合でも、if ステートメントに問題があります。プログラムは if ステートメントを入力しません。プログラムは if ステートメントを渡すだけで、単語 abazure を再び出力します。

import java.util.Scanner;
import java.io.File;
import java.io.PrintWriter;
import java.io.FileNotFoundException;
public class Manzai {

    public static void main(String[] args) {
    String word;
    Scanner input = null;
    PrintWriter output = null;

    try
    {
        input = new Scanner(new File("explicit.txt"));
        output = new PrintWriter(new File("censored.txt"));
    }
    catch(FileNotFoundException e)  
    {

        System.out.println("File explicit.txt was not found");
        System.exit(0);
    }

    while(input.hasNext())
    {
        word = input.next();

        if(word=="abazure")
        {
            word = "a******";
        }

        output.print(word + " ");
    }
    input.close();
    output.close();
}
}
4

3 に答える 3

5

==一般にオブジェクトの場合、2 つの参照変数が同じオブジェクトを参照しているかどうかを確認するだけです。equals() メソッドを使用して、文字列が等しいかどうかを確認します

    if(word=="abazure")

する必要があります

    if("abazure".equals(word))
于 2013-03-23T09:39:01.617 に答える
1

試す

if(word.equals("abazure")){
   // do something
}

文字列 #equals()

この文字列を指定されたオブジェクトと比較します。引数が null ではなく、このオブジェクトと同じ文字シーケンスを表す String オブジェクトである場合にのみ、結果は true になります。

于 2013-03-23T09:42:44.640 に答える
1

演算子 は==、2 つのオブジェクト参照変数がオブジェクトのまったく同じインスタンスを参照しているかどうかをテストします。

メソッド は.equals()、比較される 2 つのオブジェクトが等しいかどうかをテストしますが、同じオブジェクトのまったく同じインスタンスである必要はありません。

したがって、同等性のチェックには次のようなものを使用する必要があります。

 if("abazure".equals(word))
于 2013-03-23T09:43:54.913 に答える