永发信息网

关于java抽奖的一个小程序,高手进来帮我看看啊~~~

答案:4  悬赏:10  手机版
解决时间 2021-07-25 19:56

如题,程序没有报错,运行时却抛出异常,现给出程序代码:

import java.util.*;
public class choujiang1
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("总共可以抽取多少个数字?");
int m=in.nextInt();
System.out.println("你想要抽取多少个数字?");
int n=in.nextInt();

int[] numbers=new int[n];
for(int i=0;i<numbers.length;i++)
numbers[i]=i+1;

int[] result=new int[m];
for(int i=0;i<result.length;i++)
{

int r=(int)(Math.random()*n); //得到随机数

result[i]=numbers[r]; //数组拷贝
numbers[r]=numbers[n-1]; //使数字不重复
n--;
}
Arrays.sort(result);
for(int r:result)
System.out.println(r);
}
}

运行后,在第三步时抛出异常的截图如下

为什么会这样啊?麻烦高手看一下啊!还有 for(int r:result)是什么意思啊,麻烦解释一下!

最佳答案

给你分析下,你的错误原因,自己修改


n=20的情况


Math.random() 产生的随机数在0~1之间


Math.random()*n 那么随机数就是在0~20之间



int[] numbers=new int[n]; 而你声明的数组下标[0]~[19]


result[i]=numbers[r]; 所以当r=20就越界了,因为最大是19


明白了吗?????????


全部回答
for (int r : result) 就是foreach
你这里result比numbers可能长。遍历赋值的时候,就会出现下标越界。感觉是你那个数组拷贝那里的事

import java.util.*; public class choujiang1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("总共可以抽取多少个数字?"); int m = in.nextInt(); System.out.println("你想要抽取多少个数字?"); int n = in.nextInt();

int[] numbers = new int[n]; for (int i = 0; i < numbers.length; i++)//numbers数组里面存的是1到n. numbers[i] = i + 1;

int[] result = new int[m]; //result为存放结果的数组;n为想要抽取的数字的个数,m为总数。

for (int i = 0; i < result.length; i++) { int r = (int) (Math.random() * n); // 得到随机数 result[i] = numbers[r]; // 数组拷贝 //抽中numbers数组中的第r个! numbers[r] = numbers[n - 1]; // 使数字不重复 n--; // }

Arrays.sort(result); //对结果按照升序进行排序。

for (int r : result) //输出结果。 System.out.println(r); }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
酸甜苦辣 是不是苦一定要多一些
以错过为话题的800字作文
什么是第四类感情???
我认怎样度过这学校剩下的时间?
VAR=1.1
地下城在网吧组不上队,什么办法可以解决这个
地下城18级怎么转职任务丢弃后还可否转职??
大道公路大街与马路的区别?
龙玩长兵怎么加点
下一站幸福的一首曲子
什么药治止咳化痰比较好
怎样使人堕落?
怎样解脱单相思的日子
用煤气跟电热水器比较那样更节省?/
脸上有黑头怎么办吖
推荐资讯
液晶电视达到高清需要很高的刷新率吗?
DNF狂战士PK技巧
梦幻西游浙江区绍兴兰亭好吗?
阮经天与乔恩有关系吗
团队加不了人啊,SOS
下沙哪有买Q币卡
我的网页浏览器的图标是黄颜色的那种!怎么改
献祭召唤这样加点可以吗?有不对的地方请指正
有什么能使一对恋人永远不分离
兄弟或姐妹之间相隔六岁会相冲吗?有什么办法
暮光之城原版英文
我是下载的超速浏览器可不是好123是主页我想
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?