Java if语句不与变量进行比较

Java if语句不与变量进行比较,java,if-statement,Java,If Statement,这是另一个学校项目,主课生成两个随机数,然后将它们显示为加法题。然后用户必须输入两个数字的总和。程序应将输入与正确答案进行比较,但每次输入正确答案时,程序都会说输入错误 主要类别: import java.util.Random; public class MathQuiz { private int answer1, answer2, answer3, answer4, answer5, n1, n2, sum, score, scoreFinal; private St

这是另一个学校项目,主课生成两个随机数,然后将它们显示为加法题。然后用户必须输入两个数字的总和。程序应将输入与正确答案进行比较,但每次输入正确答案时,程序都会说输入错误

主要类别:

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());
}
}

传递到
getAnswerX()
方法的答案是字符串,您将它们与整数进行比较。
String
classes'
.equals()
方法返回false,因为参数是不同类型的int原语。可以使用Integer.parseInt()将字符串转换为整数,也可以在比较整数之前使用Integer.toString()将整数转换为字符串

这样的方法应该更有效:

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

    else 
    {
        message = "Incorrect";
    }

    return message;
}

传递到
getAnswerX()
方法的答案是字符串,您将它们与整数进行比较。
String
classes'
.equals()
方法返回false,因为参数是不同类型的int原语。可以使用Integer.parseInt()将字符串转换为整数,也可以在比较整数之前使用Integer.toString()将整数转换为字符串

这样的方法应该更有效:

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

    else 
    {
        message = "Incorrect";
    }

    return message;
}

您正在将代码中的
字符串
int
进行比较,两者不相等。试着将你的比较从

a1.equals(getSum())


为了将字符串与字符串进行比较。

您正在将
字符串
与代码中的
int
进行比较,两者不相等。试着将你的比较从

a1.equals(getSum())


以将字符串与字符串进行比较。

您正在尝试将整数与字符串进行比较

尝试改变

a1.equals(getSum())


您正在尝试将整数与字符串进行比较

尝试改变

a1.equals(getSum())


第1步:不要让用户问五个问题,而是问他们一个问题。 这将大大加快调试速度。一旦你的代码成功了,就提出五个问题

步骤2:代码只问一个问题,然后你可以做更简单的更改, toString()并计算答案,如Asah所述。
您不会感到性能受到影响。

步骤1:不要让用户问五个问题,而是问他们一个问题。 这将大大加快调试速度。一旦你的代码成功了,就提出五个问题

步骤2:代码只问一个问题,然后你可以做更简单的更改, toString()并计算答案,如Asah所述。
您不会感到性能受到影响。

在撰写本文时,有两个答案,都是正确的。第一个好工作是尝试一些东西。许多人来这里寻找专业人士为他们做家庭作业

以下是改进代码需要考虑的一些事项:

1) 一致的缩进将帮助您阅读代码。 2) 为什么你需要这么多的getAnswer方法,你只需要一个,而不是1-5个。 3) 您应该检查getAnswer方法的字符串参数是否为null,否则将出现null指针异常


还有一些其他的事情,但这将暂时奏效。

在撰写本文时,有两个答案,都是正确的。第一个好工作是尝试一些东西。许多人来这里寻找专业人士为他们做家庭作业

以下是改进代码需要考虑的一些事项:

1) 一致的缩进将帮助您阅读代码。 2) 为什么你需要这么多的getAnswer方法,你只需要一个,而不是1-5个。 3) 您应该检查getAnswer方法的字符串参数是否为null,否则将出现null指针异常


还有一些其他的事情,但是现在就行了。

你能解释一下我应该改变什么吗你能解释一下我应该改变什么吗