java - 方法始终返回零

标签 java return return-value

我对java很陌生,我正在尝试创建一个程序来测试用户两个随机频率之间的差异。一切正常,除了当我尝试获取 2 个频率的差异时,答案始终为 0。如何让它显示实际差异?这是我编写的用于创建音调并计算差异的类:

public class Quiz{

    private PitchPlay one = new PitchPlay();
    private PitchPlay two = new PitchPlay();

    private int frequencyOne;
    private int frequencyTwo;

    private int dif = new Integer(Math.abs(frequencyTwo - frequencyOne));

public int run(){
    frequencyOne = new Integer((int)(Math.random() * 5000 + 50));
    frequencyTwo = new Integer((int)(Math.random() * 5000 + 50));
    return this.dif;
}

public int freqDif(){
    return this.dif;
}

public void playQuiz(){
    one.play(one.note(frequencyOne, 2, 15));//note(frequency, duration, volume)
    two.play(two.note(frequencyTwo, 2, 15));
}
}

这是使用测验类的类:

public class Action implements ActionListener{
Quiz one = new Quiz();

public void actionPerformed (ActionEvent e){
        if(e.getSource() == playSoundButton)
        {
            if(answerResponse.getText().compareTo("Correct!")  == 0 || answerResponse.getText().compareTo("Play and Listen...") == 0)
            {
                one.run();
                one.playQuiz();
            }
            else
            {
                one.playQuiz();
            }
        }
        if(e.getSource() == submitButton)
        {   
            String responseText = new String(responseField.getText());
            if(responseText !=null && !"".equals(responseText)){
                try{
                    Integer responseNumber = Integer.parseInt(responseText);

            if(responseNumber == one.freqDif())
            {
                    answerResponse.setText("Correct!");
                    answerResponse.setVisible(true);
            }
            else
            {
                answerResponse.setText("Wrong Answer. The difference is " + one.freqDif() + " hertz.");
                answerResponse.setVisible(true);
            }
                }catch(NumberFormatException f){
                    f.printStackTrace(System.out);
                }
            }



        }

    }
}

最佳答案

private int dif = new Integer(Math.abs(frequencyTwo - frequencyOne));

这是在创建变量时计算的,而不是在使用变量时计算的。分配变量后需要进行计算。

关于java - 方法始终返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22103522/

相关文章:

c - 从函数返回数组

c++ - 用户自定义函数返回值分配 : Performance?

javascript - Jquery:获取函数的返回值

java - 在没有 #ifdef 预处理器的情况下定义变量

java - 在 XWPFDocument 中的段落内插入换行符

java - 为什么我的 "while(rs.next()) "无法执行我使用过的所有 if、ifelse、else?

java - 如何识别返回的对象是否是在方法执行期间创建的 - Java

java - 从 Java 程序访问 NFS 共享

c++ - 使用空的 for 循环有什么问题吗?

java - 如何将 JDialog 框中的值返回到父 JFrame?