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 }