数字生成器,但在用户输入的范围内。JAVA

数字生成器,但在用户输入的范围内。JAVA,java,random,numbers,range,generator,Java,Random,Numbers,Range,Generator,嗨,我是java和stackoverflow的新手。我试图创建一个程序,要求用户输入一个范围,它将在用户范围内创建一个随机数列表。看起来像这样 package numbergenerator; import java.util.Random; import java.util.Scanner; public class numbergenerator { public static void main(String[] args) { Scanner s = new

嗨,我是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);

    }

}
机组编号发电机;
导入java.util.Random;
导入java.util.Scanner;
公共类编号生成器{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
随机r=新随机();
int int1;
int int2;
int答案;
整数;
System.out.println(“输入您的最小范围编号:”);
int1=s.nextInt();
System.out.println(“输入您的最大范围编号:”);
int2=s.nextInt();
System.out.println(“您想要多少个数字?”);
数字=s.nextInt();
对于(int计数器=0;计数器int2;
//这不管用。
//我知道这是不正确的语法,但是正确的语法是什么呢?
System.out.println(应答);
}
}

我在如何获取随机数方面遇到了问题。如果你有什么想法,请告诉我。另外,我可能也会把for循环搞砸,所以请告诉我。谢谢。

计算你需要的数字范围

// 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);
注意:您应该知道,这只会生成介于
min
max-1
之间的随机数。如果您想包括
max
,您需要将
1
添加到范围…

试试这个

  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);
}

        }

    }
机组编号发电机;
导入java.util.Random;
导入java.util.Scanner;
公共类编号生成器{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
随机r=新随机();
int int1;
int int2;
int答案;
整数;
System.out.println(“输入您的最小范围编号:”);
int1=s.nextInt();
System.out.println(“输入您的最大范围编号:”);
int2=s.nextInt();
System.out.println(“您想要多少个数字?”);
数字=s.nextInt();

对于(int counter=0;counter,假设您有以下值:

int max;
int min;
如果您想得到一个介于max和min之间的新随机数,您需要了解random类是如何工作的

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

因此,如果要获得介于max和min之间的数字(包括两者),则必须执行以下操作:

Random r = new Random();
int randomNumber=r.nextInt(max-min+1)+min;
机组编号发电机;
导入java.util.Random;
导入java.util.Scanner;
公共类编号生成器{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
Random rn=新的Random();
int int1;
int int2;
int答案;
整数;
System.out.println(“输入您的最小范围编号:”);
int1=s.nextInt();
System.out.println(“输入您的最大范围编号:”);
int2=s.nextInt();
System.out.println(“您想要多少个数字?”);
数字=s.nextInt();

for(int counter=0;counterCalculate the range(max-min),从0-range计算一个随机数,add min你还有一个for的bug(int counter=0;counterThank@ScaryWombat,这对我很有帮助。我不知道为什么有人会否决这个。这是一个很好的解决方案。我“认为”可能是因为它只会生成min-(max-1)范围内的数字,但该要求尚未声明…如果您希望确保范围为正,并且不相信用户会遵循说明,您也可以使用Math.abs(int2-int1):@jbeck True,但您还应该使用
Math.min(…)-Math.max(…)
;)-有人会问这是否超出了问题的范围;)@jbeck啊,不,等等,我想我明白你的意思了:p'answer=…'和'System.out…'行需要在for循环的范围内(即OP中的大括号)。如前所述,for循环对程序的输出没有影响,只会生成和显示一个答案。这将永远不会生成一个等于上限(int2)的数字。修改为answer=r.nextInt(int2-int1+1)+int1;因此您得到了正确的范围
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 );
        }
    }
}