JavaSE-6.2【基础知识练习案例*10】

  1 package day6;
  2 
  3 import java.util.Scanner;
  4 
  5 /**
  6  * @author haifei
  7  *
  8  * 基础知识练习案例*10
  9  */
 10 
 11 public class demo2 {
 12     public static void main(String[] args) {
 13 //        myTest1();
 14 //        myTest2();
 15 //        myTest3();
 16 //        myTest4();
 17 //        myTest5();
 18 //        myTest6();
 19 //        myTest7();
 20 //        myTest8();
 21 //        myTest9();
 22         myTest10();
 23     }
 24 
 25     public static void myTest1(){
 26         Scanner sc = new Scanner(System.in);
 27         System.out.println("请输入1-7中的一个整数:");
 28         int week = sc.nextInt();
 29         if(week<1 || week>7){
 30             System.out.println("输入有误");
 31         }else if(week == 1){
 32             System.out.println("跑步");
 33         }else if(week == 2){
 34             System.out.println("游泳");
 35         }else if(week == 3){
 36             System.out.println("爬山");
 37         }else if(week == 4){
 38             System.out.println("散步");
 39         }else if(week == 5){
 40             System.out.println("单车");
 41         }else if(week == 6){
 42             System.out.println("拳击");
 43         }else {
 44             System.out.println("周末吃亿顿好的");
 45         }
 46     }
 47 
 48     public static void myTest2(){
 49         /*
 50         IDEA导包:
 51             1:手动导包
 52                 import java.util.Scanner;
 53             2:快捷键导包
 54                 未导包时,若代码中已写Scanner,则会字体变红,
 55                 此时鼠标放到红色字处然后Alt+Enter会出现后选包,选中即可
 56             3:自动导包
 57                 Scanner写一半的时候IDEA会提示,此时回车
 58          */
 59         Scanner sc = new Scanner(System.in);
 60         System.out.println("请输入1-7中的一个整数:");
 61         int week = sc.nextInt();
 62         switch (week){
 63             case 1:
 64                 System.out.println("跑步");
 65                 break;
 66             case 2:
 67                 System.out.println("游泳");
 68                 break;
 69             case 3:
 70                 System.out.println("拳击");
 71                 break;
 72             case 4:
 73                 System.out.println("散步");
 74                 break;
 75             case 5:
 76                 System.out.println("单车");
 77                 break;
 78             case 6:
 79                 System.out.println("爬山");
 80                 break;
 81             case 7:
 82                 System.out.println("周末吃亿顿好的");
 83                 break;
 84             default:
 85                 System.out.println("输入有误");
 86                 break;
 87         }
 88     }
 89 
 90     public static void myTest3(){ //敲7游戏
 91         int count = 0;
 92         for(int i=1; i<=100; i++){
 93             if( (i%10 == 7) || (i/10%10 == 7) || (i%7 == 0)){
 94                 System.out.print(i + " ");
 95                 count++;
 96             }
 97             if(count == 5){
 98                 System.out.println();
 99                 count = 0;
100             }
101         }
102     }
103 
104     public static void myTest4(){
105         /*
106         有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
107         假如兔子都不死,问第二十个月的兔子对数为多少?
108 
109         1:为了存储多个月的兔子对数,定义一个数组,用动态初始化完成数组元素的初始化,长度为20
110         2:因为第1个月,第2个月兔子的对数是已知的,都是1,所以数组的第1个元素,第2个元素值也都是1
111         3:用循环实现计算每个月的兔子对数
112         4:输出数组中最后一个元素的值,就是第20个月的兔子对数
113          */
114 
115         int[] arr = new int[20];
116         arr[0] = 1;
117         arr[1] = 1;
118 
119 //        arr[2] = arr[0] + arr[1];
120 //        arr[3] = arr[1] + arr[2];
121 //        arr[4] = arr[2] + arr[3];
122 
123         for(int i=2; i<arr.length; i++){
124             arr[i] = arr[i-2] + arr[i-1]; //规律总结
125         }
126 
127         System.out.println("第二十个月的兔子对数:" + arr[19]);
128     }
129 
130     public static void myTest5(){ // 百钱白鸡
131         /*
132         我国古代数学家张丘建在《算经》一书中提出的数学问题:
133             鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
134             百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
135 
136         x+y+z=100
137         5x+3y+z/3=100
138         0<=x<=20
139         0<=y<=33;
140         0<=z<=100
141 
142         1:第1层循环,用于表示鸡翁的范围,初始化表达式的变量定义为 x=0,判断条件是x<=20
143         2:第2层循环,用于表示鸡母的范围,初始化表达式的变量定义为 y=0,判断条件是y<=33
144         3:这个时候,用于表示鸡雏的变量 z = 100 – x – y
145         4:判断表达式 z%3==0 和表达式 5*x + 3*y + z/3 = 100 是否同时成立,
146           如果成立,输出对应的x,y,z 的值,就是对应的鸡翁,鸡母,鸡雏的值
147          */
148         for(int x=0; x<20; x++){
149             for(int y=0; y<33; y++){
150                 int z = 100 - x - y; //z<=100
151                 if( (z%3 == 0) && (5*x + 3*y + z/3 == 100) ){
152                     System.out.println("鸡翁:" + x + " 鸡母:" + y + " 鸡雏:" + z);
153                 }
154             }
155         }
156     }
157 
158     public static void myTest6(){
159         /*
160         有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。
161         求出该数组中满足要求的元素和, 要求是:
162         求和的元素个位和十位都不能是7,并且只能是偶数
163          */
164 
165         int[] arr = {68,27,95,88,171,996,51,210};
166         int sum = 0;
167         for(int i=0; i<arr.length; i++){
168             if( (arr[i]%10 != 7) && (arr[i]/10%10 != 7) && (arr[i]%2 == 0) ){
169                 sum+=arr[i];
170             }
171         }
172         System.out.println("sum=" + sum);
173     }
174 
175     public static void myTest7(){
176         /*
177         定义一个方法,用于比较两个数组的内容是否相同
178 
179         1:定义两个数组,分别使用静态初始化完成数组元素的初始化
180         2:定义一个方法,用于比较两个数组的内容是否相同
181         3:比较两个数组的内容是否相同,按照下面的步骤实现就可以了
182             首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false
183             其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false
184             最后循环遍历结束后,返回true
185         4:调用方法,用变量接收,输出结果
186          */
187 
188         int[] arr1 = {1, 2, 3, 4, 5};
189         int[] arr2 = {2, 4, 6, 8, 10};
190         int[] arr3 = {1, 2, 3, 4, 5};
191         boolean result = compare(arr1, arr3);
192         if(result){
193             System.out.println("两个数组相同");
194         }else {
195             System.out.println("两个数组不同");
196         }
197     }
198 
199     public static boolean compare(int[] arr1, int[] arr2){
200         if(arr1.length != arr2.length){
201             return false;
202         }
203         //arr1.length == arr2.length
204         for(int i=0; i<arr1.length; i++){
205             if(arr1[i] != arr2[i]){
206                 return false;
207             }
208         }
209         return true;
210     }
211 
212     public static void myTest8(){
213         /*
214         已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,
215         查找该数据在数组中的索引。并在控制台输出找到的索引值。如果没有查找到,则输出-1
216 
217         1:定义一个数组,用静态初始化完成数组元素的初始化
218         2:键盘录入要查找的数据,用一个变量接收
219         3:定义一个索引变量,初始值为-1
220         4:遍历数组,获取到数组中的每一个元素
221         5:拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并
222         结束循环
223         6:输出索引变量
224          */
225 
226         int[] arr = {19, 28, 37, 46, 50};
227         int index = -1;
228         Scanner sc = new Scanner(System.in);
229         System.out.print("请输入要查找的数据:");
230         int inputNum = sc.nextInt();
231         for(int i=0; i<arr.length; i++){
232             if(arr[i] == inputNum){
233                 index = i;
234                 break;
235             }else {
236                 index = -1;
237             }
238         }
239         System.out.println(index);
240     }
241 
242     public static void myTest9(){
243         /*
244         已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换,
245         交换后的数组 arr = {50, 46, 37, 28,19}; 并在控制台输出交换后的数组元素。
246 
247         1:定义一个数组,用静态初始化完成数组元素的初始化
248         2:循环遍历数组,这一次初始化语句定义两个索引变量,判断条件是开始索引小于等于结束索引
249         3:变量交换
250         4:遍历数组
251          */
252 
253         int[] arr = {19, 28, 37, 46, 50};
254         System.out.println("反转前:");
255         for(int i=0; i<arr.length; i++){
256             System.out.print(arr[i] + " ");
257         }
258         System.out.println();
259 
260 //        int index_start = 0;
261 //        int index_end = arr.length-1;
262 //        while (index_start <= index_end){
263 //            int temp = arr[index_start];
264 //            arr[index_start] = arr[index_end];
265 //            arr[index_end] = temp;
266 //            index_start++;
267 //            index_end--;
268 //        }
269 
270         for(int start=0, end=arr.length-1; start<=end; start++, end--){
271             int temp = arr[start];
272             arr[start] = arr[end];
273             arr[end] = temp;
274         }
275 
276         System.out.println("反转后:");
277         for(int i=0; i<arr.length; i++){
278             System.out.print(arr[i] + " ");
279         }
280         System.out.println();
281     }
282 
283     public static void myTest10(){
284         /*
285         在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
286         选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值。
287 
288         1:定义一个数组,用动态初始化完成数组元素的初始化,长度为6
289         2:键盘录入评委分数
290         3:由于是6个评委打分,所以,接收评委分数的操作,用循环改进
291         4:定义方法实现获取数组中的最高分(数组最大值),调用方法
292         5:定义方法实现获取数组中的最低分(数组最小值) ,调用方法
293         6:定义方法实现获取数组中的所有元素的和(数组元素求和) ,调用方法
294         7:按照计算规则进行计算得到平均分
295         8:输出平均分
296          */
297 
298         int[] arr = new int[6];
299         Scanner sc = new Scanner(System.in);
300         for(int i=1; i<=6; i++){
301             System.out.print("请输入第" + i + "个评委的打分:");
302             arr[i-1] = sc.nextInt();
303         }
304 
305         System.out.print("评委打分情况:");
306         for(int j=0; j<arr.length; j++){
307             System.out.print(arr[j] + " ");
308         }
309         System.out.println();
310 
311         int min = arr[0], max=arr[0], sum=0;
312         for(int x=0; x<arr.length; x++){
313             if(min > arr[x]){
314                 min = arr[x];
315             }
316             if(max < arr[x]){
317                 max = arr[x];
318             }
319             sum += arr[x];
320         }
321 //        System.out.println(max);
322 //        System.out.println(min);
323 
324         double avg = (double)(sum - min - max) / (arr.length - 2);
325         System.out.println("最终得分:" + avg);
326     }
327 
328 }

 

posted @ 2021-05-21 19:04  yub4by  阅读(86)  评论(0编辑  收藏  举报