首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

求解这个小程序肿么运作不了

2013-11-01 
求解这个小程序肿么运行不了题目:实现随机数生成器,要求根据指定的数据范围、和产生随机数个数,生成不重复

求解这个小程序肿么运行不了
题目:实现随机数生成器,要求根据指定的数据范围、和产生随机数个数,生成不重复的随机数。

import java.util.Scanner;

public class Ex1136 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.println("请输入人数:");
int n=scanner.nextInt();
int b[]=new int[10];
for(int i=0;i<5;i++){
int  a=((int)Math.random()*n+1);
b[i]=a;
for(int j=0;j<i;j++){
if(b[i]==b[j]){
i--;
break;
}
}
}
for(int i=0;i<5;i++){
System.out.println(b[i]);
}
}

}

[解决办法]


public class Ex1136 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入人数:");
int n = scanner.nextInt();

int b[] = new int[10];
for (int i = 0; i < 5; i++) {
int a = ((int) Math.random() * n + 1);
b[i] = a;
for (int j = 0; j < i; j++) {
if (b[i] == b[j]) {
i--;//这里死循环了!!!
break;
}
}
}
for (int i = 0; i < 5; i++) {
System.out.println(b[i]);
}

}

}

[解决办法]
((int)Math.random()*n+1) 这里有问题啊 转换的时候一直是0*n。
 加个括号 ((int)(Math.random()*n)+1)
[解决办法]
帮你改好了。你犯了好几处错误

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入最大范围:");
int max = scanner.nextInt();
System.out.println("请输入个数:");
int num = scanner.nextInt();

Set<Integer> set=new HashSet<>();
while(set.size()<=num){

double random = Math.random();
int a = (int) (random * (double)max) + 1;//这里需要用double型进行乘操作
if(!set.contains(a)){
set.add(a);
}
}
//输出所有随机生成的数
for(Integer i:set){
System.out.println(i);
}
}

热点排行