10道Java基础测试题目

文章目录

    • 第1题:从键盘接受一个数字,列出该数字的中文表示格式, 例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
    • 第2题:编程计算3乘8等于几,什么方法效率更高?
    • 第3题:求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
    • 第4题:定义一个二维int数组,编写代码获取最小元素。
    • 第5题:编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符。
    • 第6题:编写程序接收键盘输入的5个数,装入一个数组,并找出其最大数和最小数。
    • 第7题:声明类Student,包含3个成员变量:name、age、score, 要求可以通过 new Student("张三", 22, 95) 的方式创建对象,并可以通过set和get方法访问成员变量
    • 第8题:在打印语句中如何打印这3个x变量?
    • 第9题:写一个正则表达式,可以匹配尾号5连的手机号。 规则:第1位是1,第二位可以是数字3458其中之一,后面4位任意数字,最后5位为任意相同的数字。
    • 第10题:小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。每到周日,小明拿到钱后会把所有零花钱花掉一半。请编程计算,从周一开始,小明需要多少天才能存够100元?

第1题:从键盘接受一个数字,列出该数字的中文表示格式, 例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。

public class Test1 {
     
    /**
     * 第1题:从键盘接受一个数字,列出该数字的中文表示格式, 例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
     * 
     * @param args
     */
    public static void main(String[] args){
     
        // 引用变量
        BufferedReader br = null;
        BufferedWriter bw = null;
        try {
     
            // 创建输入流
            br = new BufferedReader(new InputStreamReader(System.in));
            // 创建输出流
            bw = new BufferedWriter(new OutputStreamWriter(System.out));
            // 建立数组,0—9的角标对应数组内容
            char[] chs = {
      '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };
            String line = null;
            while ((line = br.readLine()) != null) {
     
                // 将读取的字符串转换成字符数组
                char[] arr = line.toCharArray();
                for (int i = 0; i < arr.length; i++) {
     
                    // 将对应‘1’字符的AScII码值转换成字符串,通过parseint方法转换成int类型数值
                    int index = Integer.parseInt(new String(
                            new char[] {
      arr[i] }));
                    bw.write(chs[index]);
                    bw.flush();
                }
            }
        } catch (IOException e) {
     
            System.out.println(e.toString());
        } finally {
     
            if (br != null)
                try {
     
                    br.close();
                } catch (IOException e1) {
     
                    throw new RuntimeException("输入流关闭失败");
                }
            if (bw != null)
                try {
     
                    bw.close();
                } catch (IOException e2) {
     
                    throw new RuntimeException("输出流关闭失败");
                }
        }
    }
}

第2题:编程计算3乘8等于几,什么方法效率更高?

public class Test2 {
     
    /**
     * 第2题:编程计算3乘8等于几,什么方法效率更高?
     * 
     * @param args
     */
    public static void main(String[] args) {
     
        // 位运算符:3<<3相当于:3*(2*2*2);
        int i = 3 << 3;
        System.out.println(i);
    }
}

第3题:求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55

public class Test3 {
     
    /**
     * 第3题:求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
     * 
     * @param args
     */
    public static void main(String[] args) {
     
        int n, a = 1, b = 1, c, d = 5, e = 0;
        for (n = 1; n < 30; n++) {
     
            // 前两个数是1 ,打印1.
            if (n <= 2) {
     
                System.out.print(1 + "\t");
            } else {
     
                c = a + b;
                System.out.print(c + "\t");
                // a+b=c;把b的值赋给a
                a = b;
                // 把c的值赋给b,运行上面的a+b=c
                b = c;
                // 每5个数换行一次
                if (n % 5 == 0) {
     
                    // 记录一行的个数
                    e++;
                    System.out.println("数的个数=" + d * e + "\t");
                }
            }
        }
    }
}

第4题:定义一个二维int数组,编写代码获取最小元素。

public class Test4 {
     
    /**
     * 第4题:定义一个二维int数组,编写代码获取最小元素。
     * 
     * @param args
     */
    public static void main(String[] args) {
     
        int[][] arr = {
      {
      1, 2,1 }, {
      18,2 }, {
      3 } };
        getMin(arr);
    }

    static int getMin(int[][] arr) {
     
        // 初始化最小值
        int Min = arr[0][0];
        // 遍历有几个一位数组
        for (int i = 0; i < arr.length; i++) {
     
            // 遍历每个一维数组的长度
            for (int j = 0; j < arr[i].length; j++) {
     
                // 遍历的过程中用Min记录住最小值
                if (Min > arr[i][j])
                    Min = arr[i][j];
            }
        }
        System.out.println(Min);
        return Min;
    }
}

第5题:编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符。

  • 例如: 原始字符串是"abc",打印得到下列所有组合情况: “a” “b” “c” “ab” “ac” “ba” “bc” “ca” “cb” “abc” “acb” “bac” “bca” “cab” “cba”
public class Test5 {
     
    /**
     * 第5题:编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符, 例如: 原始字符串是"abc",打印得到下列所有组合情况: "a"
     * "b""c" "ab" "ac" "ba" "bc" "ca" "cb" "abc" "acb" "bac" "bca" "cab" "cba"
     * 
     * @param args
     */
    public static String str = "abc";
    public static void main(String[] args) {
     
        show(0, new String());
    }
    // 递归
    public static void show(int current_recur, String temp) {
     
        if (current_recur < str.length()) {
     
            for (int i = 0; i < str.length(); i++) {
     
                if (!(temp.contains(str.substring(i, i + 1)))) {
     
                    System.out.print(temp + str.substring(i, i + 1) + "    ");
                    show(current_recur + 1,
                            new String(temp + str.substring(i, i + 1)));
                }
            }
        }
    }
}

第6题:编写程序接收键盘输入的5个数,装入一个数组,并找出其最大数和最小数。

public class Test6 {
     
    /**
     * 第6题:编写程序接收键盘输入的5个数,装入一个数组,并找出其最大数和最小数。
     * 
     * @param args
     */
    public static void main(String[] args) {
     
        // 获取键盘录入对象。
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 定义一个数组
        int[] arr = new int[5];
        // 初始化数组中的一个角标
        int max = 0, min = 0;
        // 遍历数组
        for (int i = 0; i < arr.length; i++) {
     
            try {
     
                System.out.print("请输入第" + (i + 1) + "个数:");
                // 通过parseInt,字符串中的字符必须都是指定基数的数字
                arr[i] = Integer.parseInt(br.readLine());
            } catch (IOException e) {
     
                e.printStackTrace();
            }
        }
        // 获取最值
        for (int i = 0; i < arr.length; i++) {
     
            if (arr[i] > arr[max])
                max = i;
            if (arr[i] < arr[min])
                min = i;
        }
        System.out.println("Max=" + arr[max]);
        System.out.println("Min=" + arr[min]);
    }
}

第7题:声明类Student,包含3个成员变量:name、age、score, 要求可以通过 new Student(“张三”, 22, 95) 的方式创建对象,并可以通过set和get方法访问成员变量

public class Test7 {
     
    /**
     * 第7题:声明类Student,包含3个成员变量:name、age、score, 要求可以通过 new Student("张三", 22, 95)
     * 的方式创建对象,并可以通过set和get方法访问成员变量
     * 
     * @param args
     */
    public static void main(String[] args) {
     
        Student stu = new Student("张三", 22, 95);
        System.out.println(stu.getName() + "\t" + stu.getAge() + "\t"
                + stu.getScore());
    }
}
class Student {
     
    // 封装对象
    private String name;
    private int age;
    private int score;

    // 定义带参数的构造函数
    public Student(String name, int age, int score) {
     
        this.name = name;
        this.age = age;
        this.score = score;
    }
    // 定义方法
    public String getName() {
     
        return name;
    }
    public void setName(String name) {
     
        this.name = name;
    }
    public int getAge() {
     
        return age;
    }
    public void setAge(int age) {
     
        this.age = age;
    }
    public int getScore() {
     
        return score;
    }
    public void setScore(int score) {
     
        this.score = score;
    }
}

第8题:在打印语句中如何打印这3个x变量?

例如:

class A {
      
	int x = 1; 
	class B {
      
		int x = 2; 
		void func() {
      
			int x = 3; 
			System.out.println( ? ); 
		} 
	} 
}
public class Test8 {
     
    /**
     * 第8题:在打印语句中如何打印这3个x变量? class A { int x = 1; class B { int x = 2; void
     * func() { int x = 3; System.out.println( ? ); } } }
     * 
     * @param args
     */
    public static void main(String[] args) {
     
        A.B b = new A().new B();
        b.func();
    }
}
class A {
     
    int x = 1;
    class B {
     
        int x = 2;
        void func() {
     
            int x = 3;
            // 本类功能内部使用了本类对象,都用类名.this表示
            System.out.println(A.this.x);
            System.out.println(this.x);
            System.out.println(x);
        }
    }
}

第9题:写一个正则表达式,可以匹配尾号5连的手机号。 规则:第1位是1,第二位可以是数字3458其中之一,后面4位任意数字,最后5位为任意相同的数字。

  • 例如:18601088888、13912366666
public class Test9 {
     
    /**
     * 第9题:写一个正则表达式,可以匹配尾号5连的手机号。 规则:
     * 第1位是1,第二位可以是数字3458其中之一,后面4位任意数字,最后5位为任意相同的数字。 例如:18601088888、13912366666
     * 
     * @param args
     */
    public static void main(String[] args) {
     
        // 定义电话号码规则
        String regex = "[1][3—5[8]][0—9]{4}(\\d)\\1{4}";
        // 使用户能够从 System.in 中读取一个数
        Scanner sc = new Scanner(System.in);
        boolean flag = true;
        System.out.println("输入电话号码");
        while (flag) {
     
            String str = sc.next();
            if ((str.toCharArray().length) == 11) {
     
                if (str.matches(regex)) {
     
                    flag = false;
                    System.out.println("匹配成功");
                } else {
     
                    System.out.println("匹配错误_重新输入");
                }
            } else {
     
                System.out.println("电话号码_位数错误_重新输入");
            }
        }
    }
}

第10题:小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。每到周日,小明拿到钱后会把所有零花钱花掉一半。请编程计算,从周一开始,小明需要多少天才能存够100元?

public class Test10 {
     
    /**
     * 第10题:小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。每到周日,
     * 小明拿到钱后会把所有零花钱花掉一半。请编程计算,从周一开始,小明需要多少天才能存够100元?
     * 
     * @param args
     */
    public static void main(String[] args) {
     
        // 从第一天开始开始存钱
        int day = 1;
        int money = 0;
        while (money < 100) {
     
            if (day % 7 != 0)
                money += 10;
            else if (day % 7 == 0)
                money = (money + 20) / 2;
            // 当存的钱大于或者等于100时,跳出循环
            if (money >= 100)
                break;
            day++;
        }
        System.out.println("小明需要" + day + "天才能存够100元");
    }
}

你可能感兴趣的:(Java面试题)