Java基本语法----流程控制(基础练习题)

mac2026-01-14  1

Java基本语法----流程控制02

基础练习1. if-else 练习2. switch 练习3. for 循环4. while 循环5. do ... while 循环

基础练习

1. if-else 练习

赌数游戏 提供三个1-6的随机数,作为掷骰子得到的点数。如果各个点数相同,则为豹子。 如果三个骰子点数和,小于或等于9,则为“小”。 如果三个骰子点数和,大于9,则为“大”。 用户随机选择:押大、押小或者押豹子。通过判断,输出客户是否押正确。 public static void main(String[] args){ while (true){ Random rand = new Random(); // 随机生成的三个数a,b,c int a = rand.nextInt(6) + 1; int b = rand.nextInt(6) + 1; int c = rand.nextInt(6) + 1; String result; Scanner sc = new Scanner(System.in); System.out.println("请下注(大/小/豹子):"); String size = sc.next(); System.out.println("开出的骰子数分别是:"+ a +","+ b +","+ c); int sum = a + b + c; // 3 <= sum <= 18 if (a == b && b == c){ result = "豹子"; }else if (sum <= 9){ result = "小"; }else { result = "大"; } if (size.equals(result)){ System.out.println("恭喜你,猜中了!"); System.out.println("Game Over!"); break; }else { System.out.println("很遗憾,没有猜中,再接再厉"); continue; } } } 假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入 一个两位数,然后按照下面的规则判定用户是否能赢。 如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。如果用户输入的数字没有匹配任何一个数字,则彩票作废。 public static void main(String[] args){ /* Math.random() : [0,1) * 90 ->[0,90) + 10 ->[10,100) ->[10,99] */ int lotteryNum = (int)(Math.random() * 90 + 10); // System.out.println(lotteryNum); Scanner sc = new Scanner(System.in); System.out.println("请输入第一个数:"); int num1 = sc.nextInt(); System.out.println("请输入第二个数:"); int num2 = sc.nextInt(); if ((num1*10 + num2) == lotteryNum){ System.out.println("奖励10000美元"); }else if (num1 == lotteryNum%10 && num2 == lotteryNum/10 ){ System.out.println("奖励3000美元"); }else if (num1 == lotteryNum/10 || num2 == lotteryNum%10){ System.out.println("奖励1000美元"); }else if (num1 == lotteryNum%10 || num2 == lotteryNum/10){ System.out.println("奖励500美元"); } else { System.out.println("很抱歉,你没有中奖!"); } System.out.println("开出的彩票号码为:"+ lotteryNum); } 编写程序:由键盘输入三个整数分别存入变量num1、num2、num3, 对它们进行排序,并且从小到大输出。 public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入第一个数:"); int num1 = sc.nextInt(); System.out.println("请输入第二个数:"); int num2 = sc.nextInt(); System.out.println("请输入第三个数:"); int num3 = sc.nextInt(); int temp = 0; /* * 将第一个数跟第二个数进行比较,对他们进行交换位置,将较小的数放在第一位,较大的数放第二位 * 再将第三个数跟第二个数进行比较,较小者放前面 * 最后再将第一个数和第二个数进行比较,交换位置 */ if (num1 > num2){ temp = num1; num1 = num2; num2 = temp; } if (num2 > num3){ temp = num2; num2 = num3; num3 = temp; } if (num1 > num2){ temp = num1; num1 = num2; num2 = temp; } System.out.println("从小到大输出为:"+ num1 +"--"+ num2 +"--"+ num3); }

2. switch 练习

使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输 出 “other”。 提示:String word = scan.next(); char c = word.charAt(0); public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入你想转换的小写类型:"); String word = sc.next(); char c = word.charAt(0); switch (c){ case 'a': System.out.println("A"); break; case 'b': System.out.println("B"); break; case 'c': System.out.println("C"); break; case 'd': System.out.println("D"); break; case 'e': System.out.println("E"); break; default: System.out.println("other"); break; } } 编写程序:从键盘上读入一个学生成绩,存放在变量score中,根据score的值输出其对应的成绩等级: score>=90 等级:A 70=<score<90 等级:B 60=<score<70 等级:C score<60 等级:D public static void main(String[] args){ while (true){ Scanner sc = new Scanner(System.in); System.out.println("请输入成绩:"); double score = sc.nextDouble(); int grade = (int) (score/10); if (score < 0 || score > 100){ System.out.println("成绩输入有误,请重新输入!"); continue; }else { switch (grade){ case 10: case 9: System.out.println("等级为A"); break; case 8: case 7: System.out.println("等级为B"); break; case 6: System.out.println("等级为C"); break; case 5: case 4: case 3: case 2: case 1: case 0: System.out.println("等级为D"); break; } } } }

3. for 循环

打印如下的图形:三角形

* * * * * * * * * * * * * * * * * * * * * * * * * public static void main(String[] args){ for (int i = 1; i <= 13; i++) { if (i < 9){ for (int j = 1; j <= i; j++) { if (i%2 != 0){ System.out.print("* "); } } System.out.println(); }else { for (int k = 1;k<=14-i;k++){ if (i%2 != 0){ System.out.print("* "); } } System.out.println(); } } } 打印1~100之间所有奇数的和打印1~100之间所有是7的倍数的整数的个数及总和(体会设置计数 器的思想)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数 字立方和等于其本身。 例如: 153 = 111 + 333 + 555 public static void main(String[] args){ /*打印1-100之间所有的奇数和*/ int sum = 0; for (int i = 1;i <= 100;i++){ if (i%2 != 0){ sum += i; } } System.out.println("奇数和为:"+ sum); /*打印1~100之间所有是7的倍数的整数的个数及总和*/ int sum1 = 0; int count = 0; for (int i = 1;i<=100;i++){ if (i%7 == 0){ sum1 += i; count++; } } System.out.println("总和:"+ sum1); System.out.println("个数:"+ count); /*输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数 字立方和等于其本身。 例如: 153 = 1*1*1 + 3*3*3 + 5*5*5*/ System.out.println("所有水仙花的值分别是:"); for (int i = 100;i<1000;i++){ int a = i/100; int b = i/10%10; int c = i%10; if ((a*a*a + b*b*b + c*c*c) == i){ System.out.println(i); } } }

效果截图:

4. while 循环

随机生成一个100以内的数,猜数字游戏: 从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次? public static void main(String[] args){ Random rand = new Random(); int result = rand.nextInt(100); System.out.println(result); int count = 0; while (true){ Scanner sc = new Scanner(System.in); System.out.println("请输入你猜的数:"); int num = sc.nextInt(); if (num > result){ System.out.println("猜大了,再猜"); count++; continue; }else if (num < result){ System.out.println("猜小了,再猜"); count++; continue; }else { System.out.println("恭喜你,猜对了"); count++; break; } } System.out.println("一个猜了"+ count +"次"); } 从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入 为0时结束程序 public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入一个整数:"); int posNum = 0; // 统计正数的个数 int negNum = 0; // 统计负数的个数 while (true){ int num = sc.nextInt(); if (num > 0){ posNum++; }else if (num < 0){ negNum++; }else break; } System.out.println("正数的个数为:"+ posNum); System.out.println("负数的个数为:"+ negNum); }

5. do … while 循环

山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满? public static void main(String[] args){ int water = 15; int l = 0; do { water += 5; l++; }while (water < 50); System.out.println(l +"次,才能挑满水"); }
最新回复(0)