1. 程式人生 > >Java基礎程式設計題(API階段測試)(答案)

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[email protected]#$%^
            輸出:ABCDEabcd123456[email protected]#$%^中大寫字母有: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();
    }
}