- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我打算编写一个程序,依次列出一个随机数,它确实做到了(伴随着一声蜂鸣声)。然而,它忽略了程序正确运行所需的基本功能。 Ask() 函数执行其含义,它要求用户输入范围 (1000-9999) 之间的整数,然后将其与获胜数字(随机)进行比较,以查看用户是否正确猜对并因此获胜。我最近才开始用 Java 写作,所以我不太确定我是否犯了一个基本错误。任何帮助将不胜感激!
package edu.pupr.pega4;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.Scanner;
import javax.swing.JOptionPane;
import javax.swing.Timer;
public class Pega4Driver {
public static void main(String[] args) {
Pega4 test = new Pega4(2000, true);
test.start();
JOptionPane.showMessageDialog(null, "Quit program?");
JOptionPane.showMessageDialog(null, "Perdiste!!!");
System.exit(0);
}
}
class Pega4 {
private int interval; //Time interval for new number to appear
private boolean beep; //BEEP
private int number; //The input number
private int tiradas = 1; //Counter
private int winNum; //The winning number
//Constructor
public Pega4(int interval, boolean beep) {
this.interval = interval;
this.beep = beep;
}
//Returns a random number within a specified range
public double getRandomIntegerBetweenRange(double min, double max){
double x = (int)(Math.random()*((max-min)+1))+min;
return x;
}
public void start() {
class Pega4Inner implements Asker, ActionListener {
Scanner input = new Scanner(System.in);
Date now = new Date();
@Override
public void ask() {
System.out.println("Entrar numero deseado: ");
number = input.nextInt();
//Input Validation
if (number < 1000 || number > 9999)
{
System.out.println("Entrada invalida. Entrar numero deseado: ");
number = input.nextInt();
}
System.out.println(now);
}
@Override
public void actionPerformed(ActionEvent e) {
winNum = (int) getRandomIntegerBetweenRange(1000, 9999);
System.out.println("Tirada #" + (tiradas++) + ": " + winNum);
if (beep)
Toolkit.getDefaultToolkit().beep();
if (winNum == number)
{
JOptionPane.showMessageDialog(null, "Ganaste!!!");
System.exit(0);
}
}
}
ActionListener listener = new Pega4Inner();
Timer timer = new Timer(interval, listener);
timer.start();
}
}
Pega4Inner 类实现了我创建的名为 Asker 的接口(interface)。其代码如下:
package edu.pupr.pega4;
public interface Asker {
void ask();
}
最佳答案
您需要从某个地方实际调用您的 ask()
方法:)我认为在当前代码中执行此操作的正确点是在 Pega4Inner
中的 actionPerformed()
方法的开头:
public void actionPerformed(ActionEvent e) {
ask();
winNum = (int) getRandomIntegerBetweenRange(1000, 9999);
…
编辑
根据您仅调用 ask()
一次的要求,一种方法是从内部类中取出此方法并将其放入外部类中,然后在你的司机级别。因此,您的 Pega4
类可能如下所示:
class Pega4 {
private int interval; //Time interval for new number to appear
private boolean beep; //BEEP
private int number; //The input number
private int tiradas = 1; //Counter
private int winNum; //The winning number
//Constructor
Date now = new Date();
Scanner input = new Scanner(System.in);
public Pega4(int interval, boolean beep) {
this.interval = interval;
this.beep = beep;
}
//Returns a random number within a specified range
public double getRandomIntegerBetweenRange(double min, double max) {
double x = (int) (Math.random() * ((max - min) + 1)) + min;
return x;
}
public void ask() {
System.out.println("Entrar numero deseado: ");
number = input.nextInt();
//Input Validation
while (number < 1000 || number > 9999) { // not IF here
System.out.println("Entrada invalida. Entrar numero deseado: ");
number = input.nextInt();
}
System.out.println(now);
}
public void start() {
class Pega4Inner implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// ask();
winNum = (int) getRandomIntegerBetweenRange(1000, 9999);
System.out.println("Tirada #" + (tiradas++) + ": " + winNum);
if (beep) {
Toolkit.getDefaultToolkit().beep();
}
if (winNum == number) {
JOptionPane.showMessageDialog(null, "Ganaste!!!");
System.exit(0);
}
}
}
ActionListener listener = new Pega4Inner();
Timer timer = new Timer(interval, listener);
timer.start();
}
}
然后在您的 Pega4Driver
类中:
...
Pega4 test = new Pega4(2000, true);
test.ask();
test.start();
...
关于java - 彩票程序忽略功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59881160/
我的代码看起来很业余,因为我是一名二年级的软件工程学生。 我创建了一个彩票号码生成器,并注意到奇怪但一致的结果。我的程序尝试匹配之前的欧洲百万彩票抽奖号码。我记录了尝试的次数,还记录了匹配 3、4、5
Scanner input = new Scanner(System.in); Random random = new Random(); System.out.print("Enter a numb
所以我正在模拟彩票。我生成 0 到 40 之间的 6 个数字,并将它们显示在 html id“生成”中。我的问题是,如果我第二次单击“生成”(在我的 html 页面中),之前生成的数字仍然是数组的一部
我正在尝试解决彩票号码问题。有一张 table 卡片,上面有彩票号码: 表格:卡片 +----+----+----+----+----+----+ | ID | b1 | b2 | b3 | b4 |
我是一名优秀的程序员,十分优秀!