(JFrame)如何在不显示的情况下读取随机数进行比较?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(JFrame)如何在不显示的情况下读取随机数进行比较?相关的知识,希望对你有一定的参考价值。

我正在尝试做一个数字猜谜游戏。当用户按下开始按钮时,程序将随机生成一个数字。然后,用户可以输入一个数字,并且在8次猜测程序停止后,程序将告诉用户他们是否需要更高或更低。

我设法生成一个随机数并编写一个允许用户猜测8次的循环。没有编译错误但是在按下“guessBtn”时我遇到了很多错误。这是我的代码:

private void startBtnActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    Random rand = new Random();
    int getal = rand.nextInt(100)+1;
}                                        

private void guessBtnActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    String randomNumTxt = startBtn.getText();
    int getal = Integer.parseInt(randomNumTxt);
    String gokNumTxt = guessTxt.getText();
    int gok = Integer.parseInt(gokNumTxt);
    int aantalGok = 0;

    while ((gok != getal) && (aantalGok <9)){
        if (gok < getal){
            antwoordLbl.setText("Hoger!");
            aantalGok++;
        }
        if (gok > getal){
            antwoordLbl.setText("Lager!");
            aantalGok++;
        }           
    }
    if (gok == getal){
        antwoordLbl.setText("Geraden!");
    }
    else if (aantalGok == 8){
        antwoordLbl.setText("Jammer, het getal was "+getal);
    }
}

我想我在尝试读取随机生成的数字时做错了但我无法弄清楚如何做到正确。有小费吗?

答案

根据评论并根据您的代码,考虑以下类,其中actual每次单击“开始”按钮时存储随机生成的值。作为实例变量(不是注释中提到的类变量),该值继续在该类的同一实例的方法之间可用。

public class MyFrame extends JFrame implements ... {
    // keep track of a randomly generated value
    private int actual;  // part of the class, not within a method
                         // each instance of the class will have its own value
                        // the variable exists as long as the instance exists

    private void startBtnActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        Random rand = new Random();   // this could also be an instance variable instead of creating a  new one each time
        // int getal = rand.nextInt(100)+1;  getal would be a local method variable and is lost when the method returns
        actual = rand.nextInt(100)+1; // keep track of the random value
   }                                        

    private void guessBtnActionPerformed(java.awt.event.ActionEvent evt) {
        ...
        int guess = ...  // whatever the user guessed
        if (guess == actual) {
           ...
        } else if (guess > actual) {
           ...
        } else {
           ...
        }
    }

}

进一步阅读:搜索“java变量范围”。

以上是关于(JFrame)如何在不显示的情况下读取随机数进行比较?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重复单词并遍历整个数组的情况下从数组中随机播放文本? (迅速)

如何在不替换条件的情况下随机化?

如何在不接触缓存的情况下写入或读取内存

如何在不创建实际新按钮的情况下创建在不同位置执行相同操作的多个按钮?

如何在不运行 Regedit 的情况下读取和导出 Windows 注册表的子树?

如何在不更改边框的情况下进行css更改以显示所有表格内容?