为什么提示java.lang.ArrayIndexOutOfBoundsException: -1 ???

用随机数产生彩票序列的小程序,为什么提示数组下标的问题呢???importjava.util.*;publicclassLotteryDrawing{publicstat... 用随机数产生彩票序列的小程序,为什么提示数组下标的问题呢???

import java.util.*;

public class LotteryDrawing {
public static void main(String[] args){
Scanner in = new Scanner(System.in);

System.out.print("要选几个数?");
int select_numbers = in.nextInt();

System.out.print("最大的数是多少?");
int all_numbers = in.nextInt();

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

int[] GuessResult = new int[select_numbers];
for(int j = 0; j < GuessResult.length; j++){
int r = (int)(Math.random() * all_numbers);

GuessResult[j] = All_numbers[r];

All_numbers[r] = All_numbers[all_numbers - 1];//此处报错

all_numbers--;
}
Arrays.sort(GuessResult);
System.out.println("我猜下面这几个能中~~~");
for(int r : GuessResult)
System.out.println(r);
}

}
展开
 我来答
xiaoben8and8
2012-03-02 · 超过13用户采纳过TA的回答
知道答主
回答量:25
采纳率:100%
帮助的人:14.7万
展开全部
for(int j = 0; j < GuessResult.length; j++){
int r = (int)(Math.random() * all_numbers);

GuessResult[j] = All_numbers[r];

All_numbers[r] = All_numbers[all_numbers - 1];//此处报错 当输入"最大的数"小于"要选的几个数"的时候,该for循环了GuessResult.length次,all_numbers-- 自减了GuessResult.length次,all_numbers-1,就会小于0了,All_numbers[all_numbers - 1]就会报ArrayIndexOutOfBoundsException啦

all_numbers--;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenguang5092
2012-03-02 · TA获得超过664个赞
知道小有建树答主
回答量:520
采纳率:50%
帮助的人:457万
展开全部
我猜 你选的数超过了最大数
追问
真没有……干嘛跟自己过不去啊…………
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式