Java基础编程题(API阶段测试)(答案)

第一题(编程题: 15分 )(答案)

import java.util.Scanner;

public class Test1 {
    /**
    * 模拟登录,给三次机会,并提示还有几次机会 1.假设用户名和密码均为admin,如果输入正确,控制台输出:欢迎admin登录
     * 2.如果输入错误,控制台输出:录入错误,您还有2次机会(最多有3次机会)
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        for (int i = 1; i <= 3; i++) {
            String userName = sc.nextLine();
            String passWord = sc.nextLine();
            if ("admin".equals(userName) && "admin".equals(passWord)) {
                // 如果录入正确的话, 给予提示并且退出循环
                System.out.println("欢迎admin登录");
                break;
            } else {
                if (i == 3) {
                    // 如果满足条件说明是最后一次机会, 特殊打印
                    System.out.println("您的录入机会已经使用完毕,请明日再来.");
                } else {
                    System.out.println("录入错误,您还有" + (3 - i) + "次机会");
                }
            }
        }
    }
}

第二题(编程题: 15分)

import java.util.Scanner;

public class Test2 {
    /**
     * 键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数。
            例如键盘录入:ABCDEabcd123456!@#$%^
            输出:ABCDEabcd123456!@#$%^中大写字母有:5个,小写字母有:4个,数字字符:6个,其他字符:6个
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        // 定义变量, 接受键盘录入的字符串
        String line = sc.nextLine();
        // 定义4个变量用来统计每种字符出现的次数
        int big = 0;
        int small = 0;
        int num = 0;
        int other = 0;
        // 1. 将键盘录入的字符串转成字符数组
        char[] arr = line.toCharArray();
        // 2. 遍历字符数组, 拿到每一个字符
        for (int i = 0; i < arr.length; i++) {
            char c = arr[i];
            // 3. 让每一个字符都参数范围性的判断
            if(c >= 'A' && c <= 'Z'){
                big++;
            }else if(c >= 'a' && c <= 'z'){
                small++;
            }else if(c >= '0' && c <= '9'){
                num++;
            }else {
                other++;
            }
        }

        System.out.println(line + "中大写字母有:"+big+"个,小写字母有:"+small+"个,数字字符:"+num+"个,其他字符:"+other+"个");
    }
}

第三题(编程题: 15分 )

public class Test3 {
    /**
     * (1)有一个数字字符串"25 11 -6 20 102 9",数字之间用空格间隔
     * (2)利用冒泡排序对这串数字按照从小到大排序,生成一个数值有序的字符串"-6 9 11 20 25 102"
     */
    public static void main(String[] args) {
        String s = "25 11 -6 20 102 9";
        // 1. 通过空格切割字符串得到字符串数组
        String[] sArr = s.split(" ");
        // 2. 将数字字符串转换成具体的数值,并用数组进行存储
        int[] arr = new int[sArr.length];
        for (int i = 0; i < sArr.length; i++) {
            // 3. 将每一个数字字符串转换成对应的数字
            arr[i] = Integer.parseInt(sArr[i]);
        }

        // 4. 冒泡排序
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if(arr[j] > arr[j+1]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }

        // 5. 创建StringBuffer对象用于数组中元素的拼接
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < arr.length; i++) {
            sb.append(arr[i]+ " ");
        }
        String result = sb.toString();
        System.out.println(result);


    }
}

第四题(编程题: 25分)

public class Test4 {
    /**
     * 定义一个MyStringUtil工具类,该类中定义三个方法,要求如下: (1)public static char[]
     * toCharArray(String str) :
     * 将给定的参数字符串转成对应的字符数组(不能直接调用jdk中的工具类及String类中的tocharArray方法) (2) public
     * static String getSingleString(String str) :
     * 去除给定的参数字符串中的重符字符(重复字符只保留一个),将新的字符串返回
     * 
     * (3)public static boolean isBalancedString(String str):
     * 如果左右两边字符相同则返回true,否则返回false, 例如:abccba是对称字符 例如:abcdecba不是对称字符
     */
    public static void main(String[] args) {
        System.out.println(MyStringUtil.isBalancedString("abcdecba"));
    }
}

class MyStringUtil {
    /**
     * @param str
     *            接受一个字符 串
     * @return 返回对应的字符数组
     */
    public static char[] toCharArray(String str) {
        // 1. 创建char类型的数组, 长度大小跟原字符串长度一致
        char[] arr = new char[str.length()];
        for (int i = 0; i < str.length(); i++) {
            // 2. 通过charAt方法拿到每一个字符,并且赋值给数组中对应的索引.
            arr[i] = str.charAt(i);
        }
        return arr;
    }

    public static String getSingleString(String str) {
        // aaabbbccc // abc
        // abc.contains("d");
        // 1. 将字符串拆分成字符数组
        char[] arr = str.toCharArray();
        // 2. 定义新的容器, 用来存储唯一的字符
        StringBuffer sb = new StringBuffer();
        // 3. 遍历字符数组拿到每一个字符
        for (int i = 0; i < arr.length; i++) {
            char c = arr[i];
            // 4. 拿着每一个字符,判断容器中是否包含传入的字符串.
            if (!sb.toString().contains(c + "")) {
                // 5. 如果不包含就存储
                sb.append(c);
            }
        }

        return sb.toString();
    }

    public static boolean isBalancedString(String str) {
        // 1. 将传入的字符串封装成StringBuffer对象
        StringBuffer sb = new StringBuffer(str);
        // 2. 将数据翻转
        sb.reverse();
        // 3. 如果翻转后的结果跟原字符串相同, 说明是对称字符串
        if (str.equals(sb.toString())) {
            return true;
        } else {
            return false;
        }
    }
}

第五题(编程题: 30分)

import java.util.Random;

public class Test5 {
    /**
     * 定义String getStr(char[] chs)静态方法,方法内要求:从chs中随机获取4个元素,再和1个0-9之间(包含0和9)的整数组成一个五个字符的字符串。
            定义main方法,方法内完成:
            (1)定义长度为26,元素值为26个大写英文字母的数组chs
            (2)传递数组chs调用getStr(char[] chs)方法,获取返回值,并在控制台打印返回值   
     */
    public static void main(String[] args) {
        char[] arr = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

        System.out.println(getStr(arr));

    }
    public static String getStr(char[] chs){
        // 随机获取, 需要创建Random对象
        Random r = new Random();
        // 需要将字符拼接到一起, 定义一个容器
        StringBuffer sb = new StringBuffer();
        for(int i = 1; i <= 4; i++){
            // 根据数组的长度生成随机的索引
            int index = r.nextInt(chs.length);
            // 通过索引去数组中获取元素,存储到容器当中
            sb.append(chs[index]);
        }
        // 通过nextInt方法生成随机的数字0-9
        int num = r.nextInt(10);
        // 将生成的结果添加到容器当中
        sb.append(num);
        // 转成字符串并返回
        return sb.toString();
    }
}

你可能感兴趣的:(答案)