java键盘输入的数字怎么输出成数组并使用

问题遇到的现象和发生背景 java键盘输入的数字怎么输出成数组并使用
用代码块功能插入代码,请勿粘贴截图 //导入Scanner类

import java.util.Scanner;
public class Homework6 {
public static void main(String[]args) {
//创建Scanner对象
Scanner input = new Scanner(System.in);
//友好提示
System.out.println("请输入10个数");
//定义长度为10的数组
int[] arr = new int[10];
//循环
for(int i = 0; i
//键盘接收数字
arr[i] = input.nextInt();
}
System.out.print("输入的10个数为" );
for (int i = 0; i < arr.length; i++) {
System.out.print(" " + arr[i]);
}
System.out.println(" ");
int a = 0,
b = 0,
c = 0,
d = 0;
for (int i = 0; i < arr.length; i++) {
if(1 == arr[i]) {
a++;
System.out.println("数字1的个数:" + a);
}else if(2 == arr[i]) {
b++;
System.out.println("数字2的个数:" + b);
}else if(2 == arr[i]) {
c++;
System.out.println("数字3的个数:" + c);
}else{
}
System.out.println((arr.length - (a+b+c) ));
}

}

}

运行结果及报错内容 而且不太清楚为什么旁边会有一个感叹号
我的解答思路和尝试过的方法 试了把输出语句放在外面,又接收不了arr[i]的值
我想要达到的结果能不能把数字输出出来,形成一个数组,在for循环外面可以直接使用的,不用再用for循环来显示数字了

运行结果报错内容是什么?贴一下错误信息。
输出可以改成下面的:

int a = 0, b = 0, c = 0, d = 0;
        for (int i = 0; i < arr.length; i++) {
            if (1 == arr[i]) {
                a++;
            } else if (2 == arr[i]) {
                b++;
                
            } else if (3 == arr[i]) {
                c++;
                
            } else {
                d++;
            }
            //System.out.println((arr.length - (a + b + c)));
        }
        System.out.println("数字1的个数:" + a);
        System.out.println("数字2的个数:" + b);
        System.out.println("数字3的个数:" + c);
        System.out.println("其它的个数:" + d);

输入的10个数为 1 2 3 4 5 6 7 8 2 3
数字1的个数:1
数字2的个数:2
数字3的个数:2
其它的个数:5

你这不就是一个数组了么,使用的话直接从数组取值就好了呀