数字生成器,但在用户输入的范围内。JAVA
嗨,我是java和stackoverflow的新手。我试图创建一个程序,要求用户输入一个范围,它将在用户范围内创建一个随机数列表。看起来像这样数字生成器,但在用户输入的范围内。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
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 );
}
}
}