当前位置: 代码迷 >> Java相关 >> 请哪位大神告诉小弟我这段代码错哪了
  详细解决方案

请哪位大神告诉小弟我这段代码错哪了

热度:94   发布时间:2016-04-22 20:09:46.0
请哪位大神告诉我这段代码哪里错了
package 数组作业;
import java.util.Scanner;
public class DiSiTi {

public static void main(String[] args) {
// TODO Auto-generated method stub
int[] number=new int[10];
System.out.println("请输入十个数:");
Scanner input =new Scanner(System.in);
int i;
int count=0;
int count1=0;
int count2=0;
int count3=0;
for( i=0;i<number.length;i++){
number[i]=input.nextInt();

}System.out.println("您输入的十个数是:");
for( i=0;i<number.length;i++){

System.out.println(number[i]);
}if(number[i]!=1&number[i]!=2&number[i]!=3){
count++;
}else{
switch(number[i]){
case 1:
count1++;
break;

case 2:
count2++;
break;
case 3:
count3++;
break;
}
}System.out.println("数字1的个数是:"+count1+"个");
System.out.println("数字2的个数是:"+count2+"个");
System.out.println("数字3的个数是:"+count3+"个");
System.out.println("非法数字的个数是:"+count+"个");
}

}

------解决思路----------------------
你在输出10个数字的时候,循环结束时i已经到10了,这样子number[i]就越界了
------解决思路----------------------
}System.out.println("您输入的十个数是:");
for( i=0;i<number.length;i++){    //number.length 是10       

System.out.println(number[i]);     // i最后一次执行的时候i=9  但是这里有个i++   所以 i=9+1     
}if(number[i]!=1&number[i]!=2&number[i]!=3){   //number[9]最高位才9  你调用个10所以越界
------解决思路----------------------
以后把代码放到代码块中,就在富文本编辑器的表情旁边。
public class DiSiTi {

public static void main(String[] args) {
int[] number = new int[10];
//初始化有效数字
int[] valid = new int[]{1,2,3};
System.out.println("请输入十个数:");
try(Scanner input = new Scanner(System.in)){
for (int i = 0; i < number.length; i++) {
number[i] = input.nextInt();
}
System.out.println("您输入的十个数是:");
for (int n : number) {
System.out.println(n);
}

int validTotal = 0;
for(int v : valid){
int count = 0;
for(int n : number){
if(n == v){
count++;
}
}
System.out.println("数字"+v+"的个数是:" + count + "个");
validTotal += count;
}
System.out.println("非法数字:"+(number.length-validTotal)+"个");
}
}
}
  相关解决方案