0

これは別の学校のプロジェクトで、メイン クラスで 2 つの乱数を生成し、それらを足し算の問題として表示します。次に、ユーザーは 2 つの数値の合計を入力する必要があります。プログラムは入力を正しい答えと比較する必要がありますが、正しい答えが入力されるたびに、それは間違っていると言われますか?

メインクラス:

import java.util.Random;

public class MathQuiz
{
private int answer1, answer2, answer3, answer4, answer5, n1, n2, sum, score,           scoreFinal;
private String message, m2, m3, m4, m5, finalPage;
public MathQuiz()
{
}

Random dice1 = new Random();

public void setN1()
{
    n1 = dice1.nextInt(100);
}

public void setN2()
{
    n2 = dice1.nextInt(100);
}

public void setSum()
{
    sum = n1+ n2;
}

public int getN1()
{
    return n1;
}

public int getN2()
{
    return n2;
}

public int getSum()
{
    return sum;
}



public String getAnswer1(String a1)
{
    if (a1.equals(getSum()))
    {
        message = "Correct";
        score++;
    }

    else 
    {
        message = "Incorrect";
    }

    return message;
}

public String getAnswer2(String a2)
{
    if (a2.equals(getSum()))
    {
        m2 = "Correct";
        score++;
    }

    else
    {
        m2 = "Incorrect";
    }

    return m2;
}

public String getAnswer3(String a3)
{
    if (a3.equals(getSum()))
    {
        m3 = "Correct";
        score++;
    }

    else
    {
        m3 = "Incorrect";
    }

    return m3;
}

public String getAnswer4(String a4)
{
    if (a4.equals(getSum()))
    {
        m4 = "Correct";
        score++;
    }

    else
    {
        m4 = "Incorrect";
    }

    return m4;
}

public String getAnswer5(String a5)
{
    if (a5.equals(getSum()))
    {
        m5 = "Correct";
        score++;
    }

    else
    {
        m5 = "Incorrect";
    }

    return m5;
}

public String getLast()
{
    scoreFinal = score * 20;
    finalPage = "Finished! Your score is " + scoreFinal + "%"; 
    return finalPage;
}
}

JOptionPane:

import javax.swing.JOptionPane;

public class Dialog
{
public static void main(String[] args)
{
    String A1, A2, A3, A4, A5;
    int a1, a2, a3, a4, a5;

    MathQuiz quiz = new MathQuiz();

    JOptionPane.showMessageDialog(null, "Answer these 5 math questions...");

    quiz.setN1();
    quiz.setN2();
    quiz.setSum();
    A1 = JOptionPane.showInputDialog(quiz.getN1() + " + " + quiz.getN2());

    JOptionPane.showMessageDialog(null, quiz.getAnswer1(A1));

    quiz.setN1();
    quiz.setN2();
    quiz.setSum();
    A2 = JOptionPane.showInputDialog(quiz.getN1() + " + " + quiz.getN2());

    JOptionPane.showMessageDialog(null, quiz.getAnswer1(A2));

    quiz.setN1();
    quiz.setN2();
    quiz.setSum();
    A3 = JOptionPane.showInputDialog(quiz.getN1() + " + " + quiz.getN2());

    JOptionPane.showMessageDialog(null, quiz.getAnswer1(A3));

    quiz.setN1();
    quiz.setN2();
    quiz.setSum();
    A4 = JOptionPane.showInputDialog(quiz.getN1() + " + " + quiz.getN2());

    JOptionPane.showMessageDialog(null, quiz.getAnswer1(A4));

    quiz.setN1();
    quiz.setN2();
    quiz.setSum();
    A5 = JOptionPane.showInputDialog(quiz.getN1() + " + " + quiz.getN2());

    JOptionPane.showMessageDialog(null, quiz.getAnswer1(A5));

    JOptionPane.showMessageDialog(null, quiz.getLast());
}
}
4

5 に答える 5

4

メソッドに渡される答えgetAnswerX()は文字列であり、それらを整数と比較しています。引数が異なるタイプのint プリミティブであるため、Stringクラスの.equals()メソッドは false を返しています。比較する前に、Integer.parseInt() を使用して文字列を整数に変換するか、Integer.toString() を使用して int を文字列に変換することができます。

このようなものがうまくいくはずです:

public String getAnswer1(String a1)
{
    if (Integer.parseInt(a1) == getSum())
    {
        message = "Correct";
        score++;
    }

    else 
    {
        message = "Incorrect";
    }

    return message;
}
于 2013-04-11T00:36:34.633 に答える
0

Stringコード内で aを anと比較してintいますが、これは等しくありません。比較対象を変更してみてください

a1.equals(getSum())

a1.equals(getSum().toString())

文字列を文字列と比較するため。

于 2013-04-11T00:39:04.433 に答える
0

ステップ 1: ユーザーに一連の 5 つの質問をさせる代わりに、1 つの質問をします。これにより、デバッグが大幅に高速化されます。コードが機能したら、5 つの質問にします。

ステップ 2: Asaph が述べたように、コードが 1 つの質問のみを行うと、より単純な変更 Integer.toString() を実行して答えを計算できます。パフォーマンスの低下を感じることはありません。

于 2013-04-11T00:44:20.843 に答える
0

この記事の執筆時点では、2 つの答えがあり、どちらも正しいです。何かを試すための最初の良い仕事。多くの人が宿題をやってくれるプロを探しにここに来ます。

コードを改善するために考慮すべき点がいくつかあります。

1) 一貫したインデントは、コードを読みやすくします。2) なぜそんなに多くの getAnswer メソッドが必要なのですか? 1 から 5 ではなく、1 つだけ必要です。3) getAnswer メソッドの String パラメーターが null かどうかを確認する必要があります。そうでない場合、null ポインター例外が発生します。

他にもいくつかありますが、今のところそれが機能します。

于 2013-04-11T00:45:40.473 に答える