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);
}
}
}
效果截图:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL4FFVNFzZE5UeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2gTO4ETMxAjMyATMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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 +"次,才能挑满水");
}