我的程序是求一个数组抽取几个数,程序如下:
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
可是数组索引没错啊,真的好奇怪啊
解决方案 »
- 将sql.date变成指定的类型转换成util.date
- java socket
- 打jar后 路径问题
- hibernate操作clob奇怪的问题
- java程序在window xp运行问题,急!急!急!
- java中类继承的问题
- 关于 log4j错误信息Email通知
- 如何用Java实现站点响应时间的测试?
- 各位大哥大姐小弟小妹们,什么是junit和ant!怎么用?
- 个位好:能不能按我这个程度介绍几本好的JAVA书(我考过了程序员水平考试).
- 我SWING里有个JProgressBar 控制,如何在调用CALSS时修改JProgressBar 的百分比??
- swt/jface项目如何制作成无需JVM的EXE文件.
numbers[r] = numbers[MAX_LENGTH]; 应改成:
numbers[r] = numbers[MAX_LENGTH - 1];