java面试题2

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.案例源码

练习1import 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);
    }
}


练习2public 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("这不是一个回文数");
        }
    }
}

练习3public 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()是可以重写的,如果重写后具体对比的含义根据重写规则而定
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值