原题:从键盘录入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));//同上 } } |