004循环判断

分支结构

if-else分支

image-20210112102814891

练习1:将三个数进行排序

/*
编写程序:由键盘输入三个整数分别存入变量num1、num2、num3, 
对它们进行排序(使用 if-else if-else),并且从小到大输出
*/
import java.util.Scanner;
class ExerTest01 {
	public static void main(String[] args){
		
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入第一个数字:");
		int num1 = scanner.nextInt();
		
		System.out.println("请输入第二个数字:");
		int num2 = scanner.nextInt();
		
		System.out.println("请输入第三个数字:");
		int num3 = scanner.nextInt();
		
		if(num1 >= num2){
			if (num2 >= num3){
				System.out.println(num3 + ", " + num2 + ", " + num1);
			}else if(num3 >= num1){
				System.out.println(num2 + ", " + num1 + ", " + num3);
			}else{
				System.out.println(num2 + ", " + num3 + ", " + num1);
			}
		}else{
			if(num3 >= num2){
				System.out.println(num1 + ", " + num2 + ", " + num3);
			}else if(num1 >= num3){
				System.out.println(num3 + ", " + num1 + ", " + num2);
			}else{
				System.out.println(num1 + ", " + num3 + ", " + num2);
			}
		}
	}
}

练习2:判断执行结果

image-20210112101357186

练习3:输出狗狗年龄

/*
狗的前两年每 一年相当于人类的10.5岁,之后每增加一年就增加四岁

*/
import java.util.Scanner;
class ExerTest02 {
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入狗狗年龄:");
		double dogAge = scanner.nextDouble();	

		if(dogAge > 0 && dogAge <= 2){
			System.out.println("狗狗今年" + dogAge * 10.5 + "岁");
		}else if (dogAge > 2){
			System.out.println("狗狗今年" + (2 * 10.5 + (dogAge-2) * 4) + "岁");
		}else{
			System.out.println("您输入的数字有误");
		}
	}
}

练习4:彩票游戏

/*
假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入
一个两位数,然后按照下面的规则判定用户是否能赢。
如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
如果用户输入的数字没有匹配任何一个数字,则彩票作废。

提示:使用(int)(Math.random() * 90 + 10)产生随机数。
Math.random() : [0,1) * 90 --> [0,90) + 10 --> [10,100) --> [10,99]

*/
import java.util.Scanner;
class ExerTest03 {
	public static void main(String[] args){
		 //获得用户输入的数字
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数字(两位数的):");
        int numPer = scanner.nextInt();
        String perNum = numPer + "";

        //将用户输入的数字分成个位数
        char perIn0 = perNum.charAt(0);
        char perIn1 = perNum.charAt(1);

        //机器随机生成的数字
        int numRand = (int)(Math.random() * 90 + 10);
        //int numRand = 34;
        String randNum = numRand + ""; 
		//System.out.println(randNum);
        char comIn0 = randNum.charAt(0);
        char comIn1 = randNum.charAt(1);

        //比较判断
        if(numPer == numRand){
            System.out.println("奖金10 000美元");
        }else if(perIn0 == comIn1 && perIn1 == comIn0){
            System.out.println("奖金 3 000美元");
        }else if(perIn0 == comIn0 || perIn1 == comIn1){
            System.out.println("奖金1 000美元");
        }else if(perIn0 == comIn1 || perIn1 == comIn0){
            System.out.println("奖金500美元");
        }else{
            System.out.println("彩票作废");
        }
	}
}

练习5:猜大小

/*
提供三个1-6的随机数,作为掷骰子得到的点数。如果各个点数相同,则为豹子。
如果三个骰子点数和,小于或等于9,则为“小”。
如果三个骰子点数和,大于9,则为“大”。
用户随机选择:押大、押小或者押豹子。通过判断,输出客户是否押正确。

*/
import java.util.Scanner;
class IfTest01 {
	public static void main(String[] args){
		int result1 = (int)(Math.random()*6+1);
		int result2 = (int)(Math.random()*6+1);
		int result3 = (int)(Math.random()*6+1);
		
		char answer;

		if(result1 == result2 && result1 == result3){
			answer = '豹';
		}else if(result1 + result2 + result3 <= 9){
			answer = '小';
		}else{
			answer = '大';
		}
		
		System.out.println(answer);
		
		Scanner scanner = new Scanner(System.in);
		System.out.println("请猜大小(豹子/大/小):");
		String perValue = scanner.next();
		char value = perValue.charAt(0);

		if(value == answer){
			System.out.println("押中了!");
		}else{
			System.out.println("没押中");
		}

	}
}

switch-case分支

image-20210112102853408

练习1:字符串转字符

/*
使用 switch 把小写类型的 char型转为大写。
只转换 a, b, c, d, e. 其它的输出 “other”。

*/
import java.util.Scanner;
class SwitchTest01 {
	public static void main(String[] args){
		
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入a,b,c,d,e:");
		String character01 = scanner.next();
		char character02 = character01.charAt(0);
		switch (character02){
		case 'a':
			character02 = 'A';
			System.out.println(character02);
			break;
		case 'b':
			character02 = 'B';
			System.out.println(character02);
			break;
		case 'c':
			character02 = 'C';
			System.out.println(character02);
			break;
		case 'd':
			character02 = 'D';
			System.out.println(character02);
			break;
		case 'e':
			character02 = 'E';
			System.out.println(character02);
			break;
		}
	}
}

练习2:判断成绩

/*
对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

*/
import java.util.Scanner;
class SwitchTest02 {
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		int score = scanner.nextInt();
		switch (score / 60){
		case 0:
			System.out.println("不合格");
			break;
		default:
			System.out.println("合格");
		}
	}
}

练习3:判断月份输出季节

/*
根据用于指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季


*/
import java.util.Scanner;
class SwitchTest03 {
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		int month = scanner.nextInt();
		switch (month){
		case 3:
		case 4:
		case 5:
			System.out.println("春季");
			break;
		case 6:
		case 7:
		case 8:
			System.out.println("夏季");
			break;
		case 9:
		case 10:
		case 11:
			System.out.println("秋季");
			break;
		case 12:
		case 1:
		case 2:
			System.out.println("冬季");
		}
	}
}

练习4:通过年月日判断全年第几天数

/*
从键盘分别输入年、月、日,判断这一天是当年的第几天

注:判断一年是否是闰年的标准:
可以被4整除,但不可被100整除
或
可以被400整除

*/
import java.util.Scanner;
class SwitchTest05 {
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入年份:");
		int year = scanner.nextInt();
		System.out.println("请输入月份:");
		int month = scanner.nextInt();
		System.out.println("请输入天数:");
		int day = scanner.nextInt();
		
		int sumDay = 0;
		// 1, 3, 5, 7, 8, 10, 12  ==  31
		// 4, 6, 9, 11  ==  30
		switch (month){
			case 12:
				sumDay += 30;
			case 11:
				sumDay += 31;
			case 10:
				sumDay += 30;
			case 9:
				sumDay += 31;
			case 8:
				sumDay += 31;
			case 7:
				sumDay += 30;
			case 6:
				sumDay += 31;
			case 5:
				sumDay += 30;
			case 4:
				sumDay += 31;
			case 3:
				if((year%4 == 0 && year%100 != 0)||year%400 == 0){
					sumDay += 29;
				}else{
					sumDay += 28;
				}
			case 2:
				sumDay += 31;
			case 1:
				sumDay += day;
			default:
				System.out.println(year + "年" + month + "月" + day + "日" + ",是该年的第" + sumDay + "天");
			}

	}
}

image-20210112103709155

循环结构

for循环

image-20210112103838921

练习1:打印最大公约数和最小公倍数

/*
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
比如:12和20的最大公约数是4,最小公倍数是60。 

*/
import java.util.Scanner;
class ForExercise01 {
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入第一个整数:");
		int result1 = scanner.nextInt();
		System.out.println("请输入第二个整数:");
		int result2 = scanner.nextInt();

		//题目中第一个要求:计算最大公约数
		//先将输入的数字区分大小
		int max = (result1 >= result2) ?result1 :result2;
		int min = (result1 < result2) ?result1 :result2;
		//先计算小数值本身的是否是最大公约数,如果不是每次循环减一,直至数值为1结束
		for (int i = min ;i>=1 ;i--){
			if(max % i == 0 && min % i == 0){
				System.out.println(result1 + ", " + result2 + "的最大公约数是:" + i);
				break;
			}
		}

		//题目中第二个要求:计算最小公倍数
		//两数的最小公倍,最小值是用户输入的最大值;两数的最小公倍,最大值是两数相乘的积
		for(int i = max ;i <= (max * min); i++){
			if(i % max == 0 && i % min == 0){
				System.out.println(result1 + ", " + result2 + "的最小公倍数是:" + i);
				break;
			}
		}
	}
}

练习2:打印三位数的水仙花数

/*
输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数 字立方和等于其本身。
例如: 153 = 1*1*1 + 3*3*3 + 5*5*5

*/
class ForExercise02 {
	public static void main(String[] args){
		for(int i = 100; i < 1000; i++){
			//先将这个三位数,百位十位个位,分别取出
			int j1 = 0, j2 = 0, j3 = 0;
			j1 = i / 100; //百位
			j2 = (i - 100 * j1) / 10; //十位
			j3 = i - 100 * j1 - 10 * j2; //个位
			if(i == j1*j1*j1 + j2*j2*j2 + j3*j3*j3){
				System.out.println(i);
			}
		}
		
	}
}

练习3:打印九九乘法表

import java.util.Scanner;
class Test02 {
	public static void main(String[] args){
		//Scanner scanner = new Scanner(System.in);
		//int height = scanner.nextInt();
		
		int num = 9;

		for(int i = 1; i <= num; i++){
			for(int j = 1; j <= i; j++){
				System.out.print(i + " * " + j + " = " + i*j + "\t");
			}
			System.out.println();
		}
	}
}
posted @ 2021-01-16 09:18  Py-JS  阅读(111)  评论(0编辑  收藏  举报