※ ChatGPTを利用し、要約された質問です(原文:入力した文字列がチェックできない)
日本語から英語に変換するクイズプログラムの問題で正解が判定されない
このQ&Aのポイント
質問者は、日本語から英語に変換するクイズプログラムを作成しているが、正解が判定されない問題に困っている。
問題のコードにおいて、正解とユーザーが入力した解答を比較する箇所があり、正しい答えでも正解と判定されない問題が発生している。
質問者は、正解とユーザーの解答を比較する際に、文字列の比較に`==`を使用しているが、文字列の比較には`equals()`メソッドを使用する必要があることが原因であることに気づいていない。
でてくる日本語を英語にすると何になるかというクイズプログラムを作っているのですが、
if (answer_user==word.answer){
System.out.println("正解");
}else{
System.out.println("不正解 正解は"+word.answer);
}
この部分で正しい答えを入力しても正解にならなくて困っています。
今の状態では解答は"test"になるはずなのですがanswer_userとword.answerの変数の中身を"test"かどうかif (answer_user=="test")のような形でチェックするとanswer_userのほうが間違っていることになります。しかし、出力すると"test"になっているように見えます。
どうすれば直るのでしょうか?よろしくお願いします。
全体のコードは下にあります。
変数の説明
question 問題の日本語の単語
answer_user 入力した解答
answer 正しい解答
num 問題番号と照らし合わせる変数 この変数が0のとき0番の問題を出すのような形になります。
import java.io.*;
public class Main{
public static void main(String args[]) throws IOException{
Word word;
word = new Word();
word.WordInput();
System.out.println(word.question);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String answer_user = br.readLine();
if (answer_user==word.answer){
System.out.println("正解");
}else{
System.out.println(answer_user+"は不正解 正解は"+word.answer);
}
}
}
public class Word {
int num=-1;
String question="",answer="";
public void WordInput(){
num+=1;
if (num==0){
question = "テスト";
answer = "test";
}
}
}
お礼
しっかりと表示されて、うまくいきました。 ありがとうございます。