作者:雪影飘枫2502928577 | 来源:互联网 | 2023-07-31 18:39
分支结构if-else分支练习1:将三个数进行排序*编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,对它们进行排序(使用if-elseif-else),并且从
分支结构
if-else分支
练习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:判断执行结果
练习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分支
练习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 + "天");
}
}
}
循环结构
for循环
练习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 //先计算小数值本身的是否是最大公约数,如果不是每次循环减一,直至数值为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();
}
}
}