1.案例需求
练习1:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数.
练习2: 输入一个正整数,判断它是不是回文数。如:12321是回文数,个位与万位相同,十位与千位相同。
练习3:随机生成验证码
2.编程思路
-
练习1:
- 声明四个整数变量number、letter、blank、other,分别用于统计数字、字母、空格和其他字符的数量。声明一个字符数组ch,用于存储从用户输入字符串中转换得到的字符。声明一个String变量p,用于存储用户输入的字符串。
- 使用Scanner类的实例scanner从控制台读取用户输入的字符串,并存储在p中。
- 调用p.toCharArray()方法将用户输入的字符串转换为字符数组,并存储在ch中。
- 使用for循环遍历字符数组ch。在循环中,使用if-else if-else结构根据字符的类型进行统计:如果字符是数字(在’0’到’9’之间),则number自增。如果字符是字母(在’a’到’z’或’A’到’Z’之间),则letter自增。如果字符是空格(即字符’ '),则blank自增。如果字符不满足上述任何条件,则other自增。
- 使用System.out.println方法输出统计结果,包括数字、字母、空格和其他字符的数量。
-
练习2:
- 创建一个Scanner对象,以便从控制台读取用户输入。 定义布尔变量is并初始化为true,用于标记输入的数字是否为回文数。
- 提示用户输入一个正整数,读取用户输入的正整数,并存储在变量a中。
- 将长整数a转换为字符串ss,然后将字符串ss转换为字符数组ch,以便逐个字符进行比较。 获取字符数组ch的长度,并将其存储在变量j中。
- 使用一个for循环从数组的开始到中间进行比较。循环变量i从0开始,每次增加1,直到i < j / 2。在循环内部,比较ch[i](数组的第i个元素)和ch[j - i -1](数组的倒数第i个元素)。如果发现这两个字符不相等,则设置is =false;表示输入的数字不是回文数。
- 使用if-else语句检查is变量的值。如果is为true,则输出“这是一个回文数”。如果is为false,则输出“这不是一个回文数”。
-
练习3:
- 定义一个字符串str,它包含了所有可能的字符:数字(0-9)、大写字母(A-Z)和小写字母(a-z)。
- 使用Scanner类的实例scanner从控制台读取用户输入的验证码位数,并将其存储在整数变量n中。
- 创建一个StringBuffer对象stringBuffer,用于构建生成的验证码。
- 使用for循环,循环次数为用户指定的位数n。在每次循环中,使用Random类的实例random生成一个0(包含)到str.length()(不包含)之间的随机整数j。使用charAt(j)方法从字符集合str中获取对应索引的字符,并将其追加到stringBuffer中。
- 最后将生成的验证码输出到控制台。
3.案例源码
练习1:
import java.util.Scanner;
/**
* @Version:1.0
* @Description: TODO(一句话描述该类的功能)
* @Date: 2024/5/14 21:22
* @Author: wjy
*/
public class lianxi1 {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
int number = 0,letter = 0,blank = 0,other = 0;
char[] ch = null;
System.out.println("请输入字符串:");
String p = scanner.nextLine();
ch = p.toCharArray();
for (int i = 0; i < ch.length; i++) {
if (ch[i] >= '0' && ch[i] <= '9') {
number++;
} else if ((ch[i] >= 'a' && ch[i] <= 'z') || (ch[i] >= 'A' && ch[i] <= 'Z')) {
letter++;
} else if (ch[i] == ' ') {
blank++;
} else {
other++;
}
}
System.out.println("数字:" + number);
System.out.println("字母:" + letter);
System.out.println("空格:" + blank);
System.out.println("其他:" + other);
}
}
练习2:
public class lianxi2 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
boolean is = true;
System.out.print("请输入一个正整数:");
long a = s.nextLong();
String ss = Long.toString(a);
char[] ch = ss.toCharArray();
int j = ch.length;
for (int i = 0; i < j / 2; i++) {
if (ch[i] != ch[j - i - 1]) {
is = false;
}
}
if (is == true) {
System.out.println("这是一个回文数");
} else {
System.out.println("这不是一个回文数");
}
}
}
练习3:
public class lianxi3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
String str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
System.out.println("请输入所需验证码的位数:");
int n = scanner.nextInt();
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < n; i++) {
int j = random.nextInt(str.length());
stringBuffer.append(str.charAt(j));
}
System.out.println("验证码为:" + stringBuffer);
}
}
4.小结
以上就是java面试常考的编程题目,接下来还额外讲两个java面试常考的知识点,
- JDK 和 JRE 有什么区别?
JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。
JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。 ==
与“equals”的区别:
==
既可以作用在基本数据类型中,也可以作用在引用数据类型中
equals()只能作用在引用数据类型(两个对象),无法作用在基本数据类型
==
作用在基本数据类型时比较的的是值是否相同,作用在引用数据类型时比较的是两个对象的地址值是否一致(是否指向相同对象)
equals()方法在不重写的情况下调用的是"=="也就是比较两个对象的地址值是否一致,但是equals()是可以重写的,如果重写后具体对比的含义根据重写规则而定