我的程序是求一个数组抽取几个数,程序如下:
import java.util.Scanner;
import java.lang.Math;
import java.util.Arrays;
class LotteryDrawing{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入你创建的数组长度:");
int MAX_LENGTH = scan.nextInt();
System.out.println();
System.out.println("请输入你抽出数的个数:");
int count = scan.nextInt();
/*if(count > MAX_LENGTH){
System.out.println("超过数组范围,请重新输入:");
count = scan.nextInt();
}*/
int[] numbers = new int[MAX_LENGTH];
for(int index = 0;index < MAX_LENGTH;index++){
numbers[index] = index + 1;
}
System.out.println("创建的数组为:");
for(int index = 0;index < numbers.length;index++){
System.out.print(numbers[index] + " ");
}
System.out.println();
int[] newNumbers = new int[count];
System.out.println("*********************");
for(int index1 = 0;index1 < newNumbers.length;index1++){
int r = (int)(Math.random()*MAX_LENGTH);
//测试数组索引
System.out.println("*********************");
System.out.println(r);
System.out.println(index1);
System.out.println("*********************");
//测试完毕
newNumbers[index1] = numbers[r];
numbers[r] = numbers[MAX_LENGTH];
MAX_LENGTH--;
}
Arrays.sort(newNumbers);
System.out.println("新数组为:");
for(int index2 = 0;index2 <count;index2++){
System.out.print(newNumbers[index2]+" ");
}
}
}在我测试的那个循环怎么老是报异常啊。总是报这个异常:ArrayIndexOutOfBoundsException
可是数组索引没错啊,真的好奇怪啊
import java.util.Scanner;
import java.lang.Math;
import java.util.Arrays;
class LotteryDrawing{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入你创建的数组长度:");
int MAX_LENGTH = scan.nextInt();
System.out.println();
System.out.println("请输入你抽出数的个数:");
int count = scan.nextInt();
/*if(count > MAX_LENGTH){
System.out.println("超过数组范围,请重新输入:");
count = scan.nextInt();
}*/
int[] numbers = new int[MAX_LENGTH];
for(int index = 0;index < MAX_LENGTH;index++){
numbers[index] = index + 1;
}
System.out.println("创建的数组为:");
for(int index = 0;index < numbers.length;index++){
System.out.print(numbers[index] + " ");
}
System.out.println();
int[] newNumbers = new int[count];
System.out.println("*********************");
for(int index1 = 0;index1 < newNumbers.length;index1++){
int r = (int)(Math.random()*MAX_LENGTH);
//测试数组索引
System.out.println("*********************");
System.out.println(r);
System.out.println(index1);
System.out.println("*********************");
//测试完毕
newNumbers[index1] = numbers[r];
numbers[r] = numbers[MAX_LENGTH];
MAX_LENGTH--;
}
Arrays.sort(newNumbers);
System.out.println("新数组为:");
for(int index2 = 0;index2 <count;index2++){
System.out.print(newNumbers[index2]+" ");
}
}
}在我测试的那个循环怎么老是报异常啊。总是报这个异常:ArrayIndexOutOfBoundsException
可是数组索引没错啊,真的好奇怪啊
解决方案 »
- 如何将图像变成字符
- 很基础的 我想学JAVA 求求各位给我解释解释
- 求Java 数字转成英文 需要原创 + 注释 急!!!300分
- 哪个设计模式要用到抽象类?
- 关于SSH整合怪异问题
- 如何找到测试环境测试向主机发送snmp trap.
- 书上的一个例子,可就是不知道是什么错误
- 有关多线程的问题
- 那位对JAVA回调打印非常熟悉的高手解释,为什么实现后的Printable.print回被调用两次呢?
- JComboBox控件下拉时下拉部分会被TextArea覆盖如何处理?
- 我SWING里有个JProgressBar 控制,如何在调用CALSS时修改JProgressBar 的百分比??
- swt/jface项目如何制作成无需JVM的EXE文件.
numbers[r] = numbers[MAX_LENGTH]; 应改成:
numbers[r] = numbers[MAX_LENGTH - 1];