练习:33

原题:从键盘录入10个整数,合法值为1,2,3,不是这三个数字则为非法数字.试着编写程序输出相应数值的数量.

参考代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*
 * 按照书本170的提示,创建两个数组nums,count
 * nums用于储存用户输入的10个数字,count用于存储1,2,3及非法数字的个数
 * 在count数组中定义四个数字,假设为:1,2,3,4![注意:数组的下标是由0开始]
 * count数组中的数值可随便设置,可随意统计nums中的数值,但别忘记在输出的时候减去相应数值
 * 用switch结构判断nums中有几个是1,2,3或者非法字符,并且在count中的相应数值上累加
 * !!!注意,在输出的时候,你会发现统计的每个数据中都多加了:1,2,3,4(这是因为在count数组中的四个值为1,2,3,4)
 * 比如:count[0]++ = 1(数组中的下标为0的值为1)+1(用户输入)
 * count[1]++ = 2+2 (同上),依次类推
 * 所以每次相加都会将数组中原本的数据添加到结果里面,假如直接输出count[3]肯定会出错的,因为它多加了一个4
 * 所以在输出的时候,我们需要用 统计数字的结果 减去 count数组中对应的值
 * 原题:从键盘录入10个整数,合法值为1,2,3,不是这三个书则为非法数字.
 * 试着编写程序输出相应数值的数量.
 */
import java.util.Scanner;
public class P170_4{
    public static void main (String[]args){
        Scanner input = new Scanner (System.in);
        int nums [] = new int [10];//创建数组存储用户输入的10个数字
        int count[] = new int []{1,2,3,4};//创建数组统计用户输入的合法数字
        System.out.println("请输入十个整数:");
        for (int i =0;i<nums.length;i++){//循环录入数字      
            System.out.println("请输入第"+(i+1)+"个数字:");
            nums[i]=input.nextInt();    //录入数字
            switch (nums[i]){//switch结构判断数字
            case 1 :
                count[0]++;//!!重要!!这一步其实是等价于1+1,结果会出现多加了一个1,因为一次只能判断1个数字
                //所以在输出的时候要减去1
                break;
            case 2 :
                count[1]++;//道理同上
                break;
            case 3 :
                count[2]++;//道理同上
                break;
                default:
                    count[3]++;//这一步道理也是同上,具体执行就是:当nums[i]不等于1,2,3的时候
                //就对count数组中的第三个值进行加1
                break;
            }
            }
        System.out.print("输入的10个数为:");
        for (int j=0;j<nums.length;j++){
            System.out.print(nums[j]+"\t");//输出用户录入的数字
        }
        System.out.println();//空行
        System.out.println("数字1的个数:"+(count[0]-1));//输出结果,减去count数组中相应的值
        System.out.println("数字2的个数:"+(count[1]-2));//同上
        System.out.println("数字3的个数:"+(count[2]-3));//同上
        System.out.println("非法数字的个数:"+(count[3]-4));//同上
        }
    }