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)+"个");
}
}
}