今日目标:
①switch中:匹配到某个case时,跳出整个switch结构
②循环【1层】:跳出当前循环体,执行整个循环结构后面的语句
只能用于循环中,结束当次循环,即不执行当次循环,continue后面的语句,继续下一次循环
循环小结:
要习惯使用调试功能
想跟踪代码的走向,同时你们后面在学习框架的源码时,通常也会使用程序调试去跟踪。
玩多重循环,就是玩规律
需求:打印5行4列的*,怎么打印
发现使用单重循环也可以搞定,但是需要执行多次重复操作
前面说过:重复操作考虑使用循环,所以,此处我们应该使用双重循环
6种组合
练习:
1.打印n>=2行的等腰三角形* * *** 2.打印直角三角形 * ** *** 3.倒序打印九九乘法表 4.输入n,就打印n行,且改行的长度为n个n 1 2 2 3 3 3 参考代码
1.初始化数组的两种方式
动态初始化: int[] scores2 = new int[3] ,适合事先不知道里面元素的值
静态初始化: int[] aa = {12,33}
2.遍历
3.最值
比武招亲:打擂台,每个上台的都认为自己最牛逼
4.标记思想
非常非常重要,参见远古时代,对犯人的做法!!!!!
import java.util.Scanner; public class HomeWork4 { public static void main(String[] args) { Scanner input =new Scanner(System.in); System.out.println("请输入上半区菱形的行数"); int n=input.nextInt(); for (int i = n; i >= 1; i--) { //菱形的上半部分 for (int j = 1; j <= 2*n-1; j++) { if (i == j || j == 2*n - i) { System.out.print("*"); } else if((i==n&&j<=2*n-1)||((j==1||j==2*n-1)&&i<=n)) { System.out.print("#"); }else{ System.out.print(" "); } } System.out.println(); } for (int i = 2; i <= n; i++) { //菱形的下半部分 for (int j = 1; j <= 2*n-1; j++) { if ((i == j || j == 2*n - i) ){ System.out.print("*"); } else if((i==n&&j<=2*n-1)||((j==1||j==2*n-1)&&i>=2)){ System.out.print("#");} else{ System.out.print(" "); } } System.out.println(); } } }
2.实现10道 1-100 以内加减乘除求余数算术题,每题10分,操作符从 char[] chs = {'+','- ','*','/','%'} ,根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算总分数,以及答题耗时。根据分数和答题耗时,给出对应的考试等级
注意:1.限时5s,这个值自己定义;若在限时范围内,成绩在[90,100]给优秀;[80,90)给良好;
[60,80)给及格;不及格
2.若超过考试限时(0,2s],分数扣10分,扣完的分数若在上述值范围内,依然给出对应的成绩等 级;
3.若超过考试限时(2,3s],分数扣20分,扣完的分数若在上述值范围内,依然给出对应的成绩等 级;
4.若超过考试限时[5s,正无穷),分数扣50分,提示:“给你一辈子,估计都难能考及格”;
import java.util.Scanner; public class HomeWork4 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("==================答题开始====================="); int correctTimes = 0; char [] chs ={'+','-','*','/','%'}; int score = 0; int answerTime = 0; int count = 0; double start= 0.0; double end =0.0; for (int i = 1; i < 11; i++) { // 生成2个随机数 int num1 = (int)(Math.random()*101); int num2 = (int)(Math.random()*101); int num3 = (int)(Math.random()*5); System.out.println("每道题有效时间5s,答对一题加10分,答错不扣分"); System.out.println(num1+""+chs[num3]+""+num2+"=?"); start = System.currentTimeMillis();//开始时间 int ans = 0; switch (chs[num3]){ case '+': ans = num1+num2; break; case '-': ans = num1-num2; break; case '*': ans = num1*num2; break; case '/': ans = num1/num2; break; case '%': ans = num1%num2; break; } int result = input.nextInt(); end = System.currentTimeMillis();//结束时间 answerTime += (int)(end-start)/1000; if(result == ans ) { count++; System.out.println("您一共回答正确了"+count+"题"+"总计用时"+answerTime+"秒"); score+=10; }else{ System.out.println("回答错误"); } } if(answerTime-50>2){ score -=10; }else if (answerTime-50>3){ score -=20; }else if((answerTime-50)>5){ System.out.println("给你一辈子都难及格"); score -=50; } switch (score/10) { case 10: case 9: System.out.println("成绩优异"); break; case 8: System.out.println("成绩良好"); break; case 7: case 6: System.out.println("及格"); break; default: System.out.println("不及格"); break; } } }
3.买双色球,规则(1-33红中选6不重复数字;1-16篮中选1) 大体流程:
1-33红色球中,如何随机取6个且不重复。计数器,随机出来一个,将这个值置为0【表示已 经取过了】
import java.util.Scanner; public class caipiao { public static void main(String[] args) { //生成双色球 //定义大小为7的数组存放6+1个双色球上的数字 int nums[] = new int[7]; //取6次随机数 int [] inputNumber = new int[7]; Scanner input = new Scanner(System.in); //创建33个红球 int redBall[] = new int[33]; for (int i = 0; i < redBall.length; i++) { redBall[i] = i+1; } for(int i=0;i<6;i++) { // int redBall[] = new int[(int)(Math.random()*33+1)]; if(redBall[(int)(Math.random()*33+1)] !=0 ){ nums[i] = redBall[(int)(Math.random()*33)+1]; redBall[(int)(Math.random()*33)+1] = 0; }else{ i--; } } //生成蓝色球数字 nums[nums.length-1]=(int)(Math.random()*16+1); int n; System.out.println("请选择6个红球,范围在1-33之内,不得重复"); for (int i = 0; i < 7; i++) { if( i<6){ n = input.nextInt(); inputNumber[i] = n; }else{ System.out.println("请选择1个蓝球,范围在1-16之内"); n = input.nextInt(); inputNumber[i] = n; } } System.out.println("开奖的红球号码为"); for (int i = 0; i < 7; i++) { if( i<6){ System.out.print(nums[i]+" "); }else{ System.out.println(); System.out.println("开奖的蓝球号码为"); System.out.print(nums[i]+" "); System.out.println(); } } System.out.println("您选择的红球号码为"); for (int i = 0; i < 7; i++) { if( i<6){ System.out.print(inputNumber[i]+" "); }else{ System.out.println(); System.out.println("您选择的蓝球号码为"); System.out.print(inputNumber[i]+" "); System.out.println(); } } int redcount =0; int bluecount =0; for (int i = 0; i < 6; i++) { for (int j =0;j<6;j++){ if(inputNumber[i] == nums[j]){ redcount++; } } } if(inputNumber[6] == nums[6]) { bluecount++; } if(bluecount == 1){ switch (redcount){ case 6: System.out.println("恭喜你中了一等奖!"); break; case 5: System.out.println("恭喜你中了三等奖!"); break; case 4: System.out.println("恭喜你中了四等奖!"); break; case 3: System.out.println("恭喜你中了五等奖!"); break; case 2: case 1: case 0: System.out.println("恭喜你中了六等奖!"); break; } }else { switch (redcount) { case 6: System.out.println("恭喜你中了二等奖!"); break; case 5: System.out.println("恭喜你中了四等奖!"); break; case 4: System.out.println("恭喜你中了五等奖!"); break; case 3: case 2: case 1: case 0: System.out.println("谢谢参与"); break; } } } }