带用户输入的数字生成器

时间:2014-01-23 21:51:27

标签: java

好的,我写了这个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 );

  }
}

5 个答案:

答案 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”。

开发人员不会让开发人员肆无忌惮地编码。 现在我需要拿你的键盘。