好的,我写了这个RandomNumberGenerator.java类,我收到了一个错误。从逻辑上看,它看起来会起作用,但事实并非如此。我需要在用户输入的两个输入之间有一个随机数。有人会看看我的代码,看看我哪里出错了。这是我的代码:
import java.util.*;
public class NumberGenerator
{
// Begin
public static void main(String[] args){
Scanner input;
int max, min, range;
Random gen;
public static int genRandom(int mod){
Random r = new Random();
}
input = new Scanner(System.in);
System.out.println("Please enter a max value: ");
max = input.nextInt();
// Ask user to input max value
System.out.println(" Please enter a minimum value: ");
min = input.nextInt();
// Ask user to input min value
range = Math.abs(r.nextInt()) % (max - min + 1) + min;
// Get random integer between min and max values using %
System.out.println(" Your generated number is: " + range );
}
}
答案 0 :(得分:3)
您的代码结构不正确。 getRandom(..)方法在main方法中定义。您也遇到了范围问题(您在一个方法中定义了' r'变量并尝试在另一个方法中使用它。)
尝试从小做起,集中精力使你的缩进正确,然后这些错误将变得更加明显。
答案 1 :(得分:1)
你的方法,
public static int genRandom(int mod){
Random r = new Random();
}
在您的main方法中。你不能像那样在另一个方法中声明一个方法。您应该在main方法之外声明它。此外,您已声明它返回一个int,这意味着您实际上必须使它返回一个int或它不会编译。所以这样做:
public static int genRandom(int mod){
Random r = new Random();
return r.nextInt(); // Add this line to return an int.
}
public static void main(String[] args) {
...
// Call getRandom() in here where appropriate
}
注意强>
这个答案的要点是帮助您理解为什么您的代码没有编译。即使您将代码编译,它仍然可能无法正常运行。其他答案为您提供了良好的解决方案,使其正常工作。
答案 2 :(得分:1)
以下代码将起作用。基本上你在main方法中有一个非final方法。
import java.util.Random;
import java.util.Scanner;
public class NumberGenerator {
// Begin
static Random r = new Random();
public static void main(String[] args) {
Scanner input;
int max, min, range;
Random gen;
input = new Scanner(System.in);
System.out.println("Please enter a max value: ");
max = input.nextInt(); // Ask user to input max value
System.out.println(" Please enter a minimum value: ");
min = input.nextInt(); // Ask user to input min value
range = Math.abs(r.nextInt()) % (max - min + 1) + min;
// Get random integer between min and max values using %
System.out.println(" Your generated number is: " + range);
}
}
答案 3 :(得分:0)
试试这个
public class RandomRange {
public static void main(String[] args) {
int min = 50;
int max = 100;
for (int i = 0; i < 10; i++) {
int rnd = (int) ((Math.random() * (max + 1 - min))) + min;
System.out.println(rnd);
}
}
}
答案 4 :(得分:0)
您声明了一个对象:
Random gen;
然后,您创建一个名为genRandom(int mod)
的方法,该方法实例化一个新的Random对象“r
”。这是你的主要方法。哪个不对。
然后当你去调用一个方法得到一个随机数时,你选择使用不在语句范围内的“r
”。
开发人员不会让开发人员肆无忌惮地编码。 现在我需要拿你的键盘。