Java系列——基礎編程題

Java之入門題

下面是5道Java基礎題的解法,提供一個解決的視角,僅供參考。java

題目描述:編程

編程題提示用戶輸入年月日信息,判斷這一天是這一年中的第幾天並打印數組

注意點dom

  • 用戶輸入的年月日是否爲異常值?如月份和日有無越界
  • 須要判斷當年是否爲閏年,閏年需修改2月的實際天數

代碼以下spa

import java.util.Scanner;

public class homework1 { 

    public static void main(String[] args) { 

        //對用戶輸入的年月日是不是爲異常值進行斷定
        for(;;) { 
            Scanner sc = new Scanner(System.in);
            System.out.println("請您輸入年:");
            int year = sc.nextInt();
            System.out.println("請您輸入月:");
            int month = sc.nextInt();
            System.out.println("請您輸入日:");
            int day = sc.nextInt();
            int[] day_num = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 
            int res = 0; // 用於記錄當日是一年中的第幾天
            if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { 
                day_num[1] = 29; 
            } // 考慮閏年的狀況
            if(month >= 1 && month <= 12 && day >= 1 && day <= day_num[month-1]){ 
                for(int i = 1; i < month; i++){ 
                    res += day_num[i-1];
                }
                System.out.println(year + "-" + month + "-" + day + "是當年的第" + (res+day) + "天。");
                break;
            }else { 
                System.out.println("您輸入的年月日不符合實際狀況,請從新輸入哦!");
            }
        }
    }
}

運行結果在這裏插入圖片描述
在這裏插入圖片描述
3d

題目描述:code

編程找出1000之內的全部完數並打印出來。所謂完數就是一個數剛好等於它的因子之和,如:6=1+2+3blog

注意點遊戲

  • 默認1不算完數,設置一個變量記錄因子和

代碼以下圖片

public class homework2 { 
    
    public static void main(String[] args) { 

        System.out.println("1000之內的全部完數以下:");
        for(int i = 2; i <= 1000; i++){  // 1不算完數,從2開始遍歷。
            int sum = 0; // 用於記錄該數的因子和
            for(int j = 1; j < i; j++){ 
                if(0 == i % j){ 
                    sum += j;
                }
            }
            if(i == sum){ 
                System.out.print(i + " ");
            }
        }
        System.out.println();
    }
}

運行結果

在這裏插入圖片描述

題目描述:

實現雙色球抽獎遊戲中獎號碼的生成,中獎號碼由6個紅球號碼和1個藍球號碼組成。

其中紅球號碼要求隨機生成6個1~33之間不重複的隨機號碼。

其中藍球號碼要求隨機生成1個1~16之間的隨機號碼。

注意點

  • rd.nextInt(10)表明隨機生成0-9
  • 須要設置標記位判斷是否生成重複數字

代碼以下

import java.util.Random;

public class homework3 { 

    public static void main(String[] args) { 
        
        System.out.println("隨機生成一個雙色球抽獎遊戲的中獎號碼");
        int[] flag = new int[7]; // 用於判斷是否有重複數字, 最後一個位置爲標記位
        Random rd = new Random();
        for(int i = 0; i < flag.length - 1; i++){ 
            flag[6] = 0; // 用於判斷是否打印該數字的標記,該數字只有在不爲重複數字的狀況下才爲0
            flag[i] = rd.nextInt(33)+1;
            for(int j = 0; j < i; j++){ 
                if(flag[i] == flag[j]){ 
                    i--;
                    flag[6] = -1;//說明該數字重複了
                }
            }
            if(0 == flag[6]){ 
                System.out.print(flag[i] + " ");
            }
        }
        System.out.println(rd.nextInt(16)+1);
    }
}

運行結果

在這裏插入圖片描述

題目描述:

自定義數組擴容規則,當已存儲元素數量達到總容量的80%時,擴容1.5倍。例如,總容量是10,當輸入第8個元素時,數組進行擴容,容量從10變15。

注意點

  • 擴容新數組時n*1.5未必是整數,須要強制轉換類型

  • 原數組搬移至擴容後的新數組,改變的是棧區保存的指向堆區的地址

代碼以下

import java.util.Scanner;
import java.util.Arrays;

public class homework4 { 
    
    public static void main(String[] args) { 

        System.out.println("請輸入初始的數組元素個數:");
        Scanner sc = new Scanner(System.in);
        int len = sc.nextInt();
        int[] auto_arr = new int[len]; // 初始化數組
        System.out.println("請向數組中添加元素:");
        int i = 0;
        while(true) { 
            auto_arr[i++] = sc.nextInt();
            if((i)/(len*1.0) >= 0.8){ 
                int[] auto_arr_new = new int[(int)(len * 1.5)]; //建立一個擴容後的新數組
                for(int j = 0; j < auto_arr.length; j++) {  //將原數據搬移至新數組中
                    auto_arr_new[j] = auto_arr[j];
                }
                auto_arr = auto_arr_new; //將原棧區數組的指向擴容後的新數組
                len = auto_arr.length; //修改數組的長度
                System.out.println(Arrays.toString(auto_arr)); //打印擴容後的數組,可省略
            }
        }
    }
}

運行結果
在這裏插入圖片描述

題目描述:

使用雙重循環實現五子棋遊戲棋盤的繪製

注意點

  • 爲了節約空間成本,不使用二維數組

  • 利用ASCII碼實現數字到字符的轉化

代碼以下

public class homework5 { 

    public static void main(String[] args) { 

        for(int i = 0; i < 17; i++) { 
            for(int j = 0; j < 17; j++) { 
                if(0 == i && 0 == j) { 
                    System.out.print(" ");
                }else if(0 == i && j <= 10) {  //控制第一行的狀況
                    System.out.print((j-1) + " ");
                }else if(0 == i && j <= 16) { 
                    System.out.print((char)(j-11+97) + " ");
                }else if(0 == j && i <= 10) {  // 控制第一列的狀況
                    System.out.print((i-1) + " ");
                }else if(0 == j && i <= 16) {  
                    System.out.print((char)(i-11+97) + " ");
                }else { 
                    System.out.print("+ ");
                }
            }
            System.out.println();
        }       
    }
}

運行結果
在這裏插入圖片描述

相關文章
相關標籤/搜索