一、主要目的
通过编写一个简单的Java程序,加深对于条件语句和循环语句的理解,并练习使用Scanner类获取用户输入
二、主要内容
编写一个程序,根据用户输入的选项,执行相应的操作。用户可以选择判断一个整数是否为奇数、判断一个整数是否为完全平方数、判断一个整数是否为回文数、判断一个整数是否为素数、判断一个字符是否为英文字母,并输出相应的结果
三、内容实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请选择要进行的操作:");
System.out.println("1. 判断奇偶数");
System.out.println("2. 判断闰年");
System.out.println("3. 判断质数");
System.out.println("4. 判断完全平方数");
System.out.println("5. 判断回文数");
System.out.println("6. 判断素数");
System.out.println("7. 判断输入的字符是大写字母还是小写字母");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("请输入一个整数:");
int num1 = scanner.nextInt();
if (num1 % 2 == 0) {
System.out.println(num1 + "是偶数");
} else {
System.out.println(num1 + "是奇数");
}
break;
case 2:
System.out.println("请输入一个年份:");
int year = scanner.nextInt();
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
System.out.println(year + "是闰年");
} else {
System.out.println(year + "不是闰年");
}
break;
case 3:
System.out.println("请输入一个整数:");
int num2 = scanner.nextInt();
boolean isPrime = true;
if (num2 <= 1) {
isPrime = false;
} else {
for (int i = 2; i <= Math.sqrt(num2); i++) {
if (num2 % i == 0) {
isPrime = false;
break;
}
}
}
if (isPrime) {
System.out.println(num2 + "是质数");
} else {
System.out.println(num2 + "不是质数");
}
break;
case 4:
System.out.println("请输入一个整数:");
int num3 = scanner.nextInt();
boolean isPerfectSquare = false;
for (int i = 1; i <= num3 / 2; i++) {
if (i * i == num3) {
isPerfectSquare = true;
break;
}
}
if (isPerfectSquare) {
System.out.println(num3 + "是完全平方数");
} else {
System.out.println(num3 + "不是完全平方数");
}
break;
case 5:
System.out.println("请输入一个整数:");
int num4 = scanner.nextInt();
String numStr = String.valueOf(num4);
String reverseNumStr = new StringBuilder(numStr).reverse().toString();
if (numStr.equals(reverseNumStr)) {
System.out.println(num4 + "是回文数");
} else {
System.out.println(num4 + "不是回文数");
}
break;
case 6:
System.out.println("请输入一个整数:");
int num5 = scanner.nextInt();
boolean isPrime2 = true;
if (num5 <= 1) {
isPrime2 = false;
} else {
for (int i = 2; i <= Math.sqrt(num5); i++) {
if (num5 % i == 0) {
isPrime2 = false;
break;
}
}
}
if (isPrime2) {
System.out.println(num5 + "是素数");
} else {
System.out.println(num5 + "不是素数");
}
break;
case 7:
System.out.println("请输入一个字符:");
char ch = scanner.next().charAt(0);
if (Character.isLetter(ch)) {
if (Character.isUpperCase(ch)) {
System.out.println("输入的是大写英文字母");
} else {
System.out.println("输入的是小写英文字母");
}
} else {
int ascii = (int) ch;
System.out.println("非英文字母请输入一个整数:" + ascii);
}
break;
default:
System.out.println("无效的操作");
break;
}
}
}
四、重难点
在这个程序中,判断一个整数是否为回文数是一个比较难的地方。我通过将整数转换为字符串,然后使用StringBuilder类的reverse()方法将字符串反转,最后比较反转后的字符串和原字符串是否相等来判断一个整数是否为回文数。这个方法虽然简洁,但是需要了解字符串的操作方法和StringBuilder类的使用。另外,判断一个字符是否为英文字母也是一个比较重要的点,通过使用Character类的isLetter()方法和isUpperCase()方法可以轻松实现
五、心得体会
通过这次实验,我加深了对于条件语句和循环语句的理解,并且掌握了使用Scanner类获取用户输入的方法。在编写程序的过程中,我遇到了一些问题,比如如何判断一个整数是否为回文数,以及如何判断一个字符是否为英文字母。通过查阅资料和思考,我成功解决了这些问题,也提升了自己的编程能力