1.编写一个简单的计算器程序,要求用户输入两个数和操作符(+、-、*、/),然后根据操
作符进行相应的运算,并输出结果。如果输入的运算符不是有效的运算符,则输出"无效的
运算符"。
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
package kfm;
import java.util.Scanner;
public class Text01 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入第一个数:");
double num1 = in.nextDouble();
System.out.println("请输入第二个数:");
double num2 = in.nextDouble();
System.out.println("请选择运算符(+ - * /):");
String operator = in.next();
switch (operator) {
case "+" -> {
double result1 = num1 + num2;
System.out.println("两数相加的结果是:" + result1);
}
case "-" ->{
double result2 = num1 - num2;
System.out.println("两数相减的结果是:" + result2);
}
case "*" ->{
double result3 = num1 * num2;
System.out.println("两数相乘的结果是:" + result3);
}
case "/" ->{
if (num2 != 0) {
double result4 = num1 / num2;
System.out.println("两数相除的结果是:" + result4);
} else{
System.out.println("除数不能为0,请重新输入!");
}
}
default -> System.out.println("无效的运算符");
}
}
}
2.编写一个程序,根据用户输入的月份(1 到 12),输出该月份所属的季节。假设春季是 3
到 5 月,夏季是 6 到 8 月,秋季是 9 到 11 月,冬季是 12、1 和 2月。如果输入的月份超
出了范围,输出"输入错误"。
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
package kfm;
import java.util.Scanner;
public class Text02 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入月份:");
int mouth = in.nextInt();
switch (mouth){
case 3 , 4 , 5 -> System.out.printf("%d月是春季\n", mouth);
case 6 , 7 , 8 -> System.out.printf("%d月是夏季\n" , mouth);
case 9 , 10 , 11 -> System.out.printf("%d月是秋季\n",mouth);
case 12 , 1 , 2 -> System.out.printf("%d月是冬季\n",mouth);
default -> System.out.println("输入错误!");
}
}
}
3.编写一个程序,根据用户输入的月份和日期,输出该日期所在的星座。以下是一个简单的星座日期范围参考:
水瓶座(1月20日到2月18日)
双鱼座(2月19日到3月20日)
白羊座(3月21日到4月19日)
金牛座(4月20日到5月20日)
双子座(5月21日到6月20日)
巨蟹座(6月21日到7月22日)
狮子座(7月23日到8月22日)
处女座(8月23日到9月22日)
天秤座(9月23日到10月22日)
天蝎座(10月23日到11月21日)
射手座(11月22日到12月21日)
魔羯座(12月22日到1月19日)
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
package kfm;
import javax.lang.model.util.ElementScanner6;
import java.sql.SQLOutput;
import java.util.Scanner;
public class Text03 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入月份(1-12):");
int month = in.nextInt();
System.out.println("请输入日期(1-31):");
int day = in.nextInt();
String Text03 = getText03(month, day);
System.out.println("输入的日期所对应的星座为:" + Text03);
}
public static String getText03(int month, int day) {
if ((month == 1 && day >= 20 ) || (month == 2 && day <= 18)) {
return "水瓶座";
} else if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) {
return "双鱼座";
} else if ((month == 3 && day >= 21) || (month == 4 && day <= 19)) {
return "白羊座";
} else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) {
return "金牛座";
} else if ((month == 5 && day >= 21) || (month == 6 && day <= 20)) {
return "双子座";
} else if ((month == 6 && day >= 21) || (month == 7 && day <= 22)) {
return "巨蟹座";
} else if ((month == 7 && day >= 22) || (month == 8 && day <= 22)) {
return "狮子座";
} else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) {
return "处女座";
} else if ((month == 9 && day >= 23) || (month == 10 && day <= 22)) {
return "天秤座";
} else if ((month == 10 && day >= 23) || (month == 11 && day <= 21)) {
return "天蝎座";
} else if ((month == 11 && day >= 22) || (month == 12 && day <= 21)) {
return "射手座";
} else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) {
return "摩羯座";
}else {
return "输入数值有误,请重新输入!" ;
}
}
}
4.编写一个程序,根据员工的工龄来计算年终奖金。奖金计算规则如下:
工龄小于等于5年,奖金为工资的5%
工龄大于5年且小于等于10年,奖金为工资的10%
工龄大于10年,奖金为工资的15%
(工资和工龄输入)
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
package kfm;
import java.util.Scanner;
public class Text04 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入工资:");
int wages = in.nextInt();
System.out.println("请输入工龄:");
int Seniority = in.nextInt();
double bonus;
if (Seniority <= 5){
bonus = wages * 0.05;
}else if (Seniority >= 5 && Seniority <= 10){
bonus = wages * 0.1;
}else {
bonus = wages * 0.15;
}
System.out.println("员工的年终奖金为:" + bonus);
}
}
思考题:if 和 switch 各有什么特点,什么情况下用 if 更好?什么情况下 switch 更佳?两者如何选择?
if 语句的特点:
if 语句是一种条件分支语句,根据条件的布尔值进行分支选择。
可以使用多个独立的 if 语句来实现多个条件的判断。
支持任意复杂的条件表达式和逻辑运算。
可以附加 else if 和 else 分支,处理更复杂的条件情况。
适用于比较复杂的条件判断和灵活的逻辑处理。
switch 语句的特点:
switch 语句基于给定的表达式值,将不同的分支与常量或枚举值进行匹配。
可以在多个分支中选择执行的代码块。
分支的值必须是整型、字符型、字符串或枚举类型。
switch 语句具有更高的可读性和代码整洁性。
当存在多个固定的取值情况时,可以使用 switch 更简洁地进行处理。
如何选择 if 或 switch 取决于具体的情况:
如果条件需要进行范围判断或者涉及复杂的逻辑运算,可以选择使用 if。
如果条件是离散的、固定的取值情况,使用 switch 便于代码的可读性和维护性。
当判断的条件较少且明确时,switch 语句相对更简洁,但请注意不要过度使用多个 case 分支。