【问题标题】:Number generator, but within a range that the user put in. Java数字生成器,但在用户输入的范围内。Java
【发布时间】:2014-12-12 05:34:52
【问题描述】:

您好,我是 java 和 stackoverflow 的新手。我正在尝试创建一个程序,要求用户输入一个范围,它将在用户范围内创建一个随机数列表。它看起来像这样。

package numbergenerator;

import java.util.Random;
import java.util.Scanner;

public class numbergenerator {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        Random r = new Random();

        int int1;
        int int2;
        int answer;
        int numbers;


        System.out.println("Enter your min range number: ");
        int1 = s.nextInt();

        System.out.println("Enter your max range number: ");
        int2 = s.nextInt();

        System.out.println("How many numbers do ya want? ");
        numbers = s.nextInt();

        for(int counter=0; counter<numbers; counter++);
        answer = int1 < r > int2;
        //this doesn't work. 
        //And i know it is improper syntax, but then what is the proper syntax?
        System.out.println(answer);

    }

}

我遇到了如何获取随机数的问题。如果您有想法,请告诉我。我也可能把 for 循环搞砸了,所以请告诉我。谢谢。

【问题讨论】:

  • 计算范围(max-min),从0-range计算一个随机数,加上min
  • 你还有一个错误 for(int counter=0; counter
  • 感谢@ScaryWombat,这对我有帮助。

标签: java random numbers range generator


【解决方案1】:

计算你需要的数字范围...

// Make sure we only have positive numbers...not sure if that's a requirement
// bet lets make life easier
int int1 = Math.abs(int1);
int int2 = Math.abs(int2);
int range = Math.abs(int2 - int1); 

计算你在该范围内的随机数...

int answer = r.nextInt(range);

将您的较低范围添加到它...

answer += Math.min(int1, int2);

nb: 你应该知道,这只会生成minmax - 1 之间的随机数。如果要包含max,则需要将1 添加到范围...

【讨论】:

  • 我不知道为什么有人不赞成这个。这是一个很好的解决方案。
  • 我“认为”可能是因为它只会生成 min-(max - 1) 范围内的数字,但尚未说明该要求...
  • 如果您想确保范围是正数并且不相信用户遵循说明,您也可以使用 Math.abs(int2 - int1) :)
  • @jbeck 是的,但您也应该使用Math.min(...) - Math.max(...) ;) - 有人会质疑这是否超出了问题的范围;)
  • @jbeck 啊,等一下,我想我明白你的意思了:P
【解决方案2】:

试试这个

  package numbergenerator;

    import java.util.Random;
    import java.util.Scanner;

    public class numbergenerator {
        public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            Random r = new Random();

            int int1;
            int int2;
            int answer;
            int numbers;


            System.out.println("Enter your min range number: ");
            int1 = s.nextInt();

            System.out.println("Enter your max range number: ");
            int2 = s.nextInt();

            System.out.println("How many numbers do ya want? ");
            numbers = s.nextInt();

            for(int counter=0; counter<numbers; counter++){
            answer =r.nextInt(int2-int1)+int1;

            System.out.println(answer);
}

        }

    }

【讨论】:

  • 'answer = ...' 和 'System.out ...' 行需要在 for 循环的范围内(即像 OP 中的花括号)。正如所写,for 循环对程序的输出没有影响,只会生成并显示一个答案。
  • 这永远不会产生一个等于上限的数(int2)修改为答案=r.nextInt(int2-int1 +1)+int1;所以你得到正确的范围
【解决方案3】:

假设你有以下值:

int max;
int min;

如果你想得到一个介于 max 和 min 之间的新随机数,你需要了解 Random 类的工作原理。

nextInt(int n) 返回一个大于或等于零且小于(但不等于)n 的数字。

因此,如果您想获得一个介于最大值和最小值之间的数字,包括两者,您必须执行以下操作:

Random r = new Random();
int randomNumber=r.nextInt(max-min+1)+min;

【讨论】:

    【解决方案4】:
    package numbergenerator;
    
    import java.util.Random;
    import java.util.Scanner;
    
    public class numbergenerator {
        public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            Random rn = new Random();
    
            int int1;
            int int2;
            int answer;
            int numbers;
    
    
            System.out.println("Enter your min range number: ");
            int1 = s.nextInt();
    
            System.out.println("Enter your max range number: ");
            int2 = s.nextInt();
    
            System.out.println("How many numbers do ya want? ");
            numbers = s.nextInt();
    
            for(int counter=0; counter<numbers; counter++);
            {
                  int n = int1 - int2 + 1;
                  int i = rn.nextInt() % n;
                  randomNum =  int1 + i;
                  System.out.println(randomNum );
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多