Java基礎綜合練習題

猜數字小遊戲

隨機產生一個[1,100]範圍內的數據,採用鍵盤錄入的方式猜這個數字是多少。
如果鍵盤錄入的數字比隨機數大,輸出猜大了
如果鍵盤錄入的數字比隨機數小,輸出猜小了
如果鍵盤錄入的數字比隨機相同,輸出猜中了
如果猜大了或者猜小了可以重複猜,如果猜中了就遊戲結束。

//隨機產生一個[1,100]範圍內的數據
Random r=new Random();
int num=r.nextInt(100)+1; 
//採用鍵盤錄入你猜的整數
Scanner sc=new Scanner(System.in);
while(true){ 
    System.out.println("請輸入你猜的整數:");
	int myNum=sc.nextInt(); 
    //比較猜的數據是否正確
    if(myNum>num){
        System.out.println("猜大了");
    }else if(myNUm<num){
        System.out.println("猜小了");
    }else{
        System.out.println("恭喜你,猜中了^_^");
        break;
    }
}

生成驗證碼

寫一個方法,用來生成4個字符組成的驗證碼,驗證碼可以是字母和數字組成。

public class Test3 {
    public static void main(String[] args) {
        //一般驗證碼包含 大寫字母、小寫字母和0~9的數字。我隨機生成這些字符組成一個字符串就是驗證碼
        //每一個字符都有一個編碼值對應,這個對應關係就是ASCII碼錶
        /*
        * 查詢ASCII編碼,常見字符和整數的對應關係如下
        *   'a'~'z'     97~122     26個
        *   'A'~'Z'   65~90        26個
        *   '0'~'9'   48~57        10個
        */

        //定義一個char[]用來存儲所有的字符
        char[] chs=new char[62];
        int index=0;//索引從0開始

        //把'a'~'z'的所有小寫字母,存儲到數組中
        for(char i='a';i<='z';i++){
            chs[index]=i;
            index++;
        }

        //把'A'~'Z'的所有大寫字母,存儲到數組中
        for(char i='A';i<='Z';i++){
            chs[index]=i;
            index++;
        }

        //把'0'~'9'的所有數字字符,存儲到數組中
        for(char i='0';i<='9';i++){
            chs[index]=i;
            index++;
        }

        //再從chs數組中隨機產生4個字符,組成一個字符串,就是隨機的驗證碼
        Random r=new Random();
        String str=""; //一個空的字符串,用於驗證碼的拼接
        for (int i = 0; i < 4; i++) {
            //隨機產生一個索引
            int j=r.nextInt(chs.length);
            str+=chs[j];
        }

        //最終str就是驗證碼
        System.out.println(str); 
    }
}

隨機點名器

鍵盤錄入5個學生的姓名,然後隨機產出一個學生的姓名。

//鍵盤錄入5個姓名,存儲到String數組中
String[] names=new String[5];
Scanner sc=new Scanner(System.in);
for(int i=0;i<5;i++){
    System.out.println("鍵盤錄入一個姓名:");
	String name=sc.next(); //鍵盤錄入字符串
    //把錄入的姓名賦值給數組的元素
    names[i]=name;
}

//隨機從數組中獲取一個元素,就是隨機產生的姓名
Random r=new Random();
int index=r.nextInt(names.length);
//通過索引獲取姓名
String name=names[index];
System.out.println("隨機產生的姓名是:"+name); 

斐波那契數列

不死神兔問題,其實本質上就是一個數列問題叫做斐波那契數列。

數列如下:
1	1	2	 3	 5	8	13	21	...
/*
找規律:
	1.第一個數和第二個數都是1
	2.從第三個數開始,這個數等於前面兩個整數之和
根據以上的規律,求第n個數是多少?

思路:
	1.創建長度爲n的數組array
	2.按照規律給數組中的元素賦值
		//第一個數和第二個數都是1
		array[0]=1;
		array[1]=1;
		//從第三個數開始這個數等於前面兩個整數之和
		array[i]=array[i-1]+array[i-2]
*/
public class Test5 {
    public static void main(String[] args) {
        //創建長度爲n的數組array
        int[] array=new int[20];
        //第一個數和第二個數都是1
        array[0]=1;
        array[1]=1;

        //從第三個數開始這個數等於前面兩個整數之和
        for(int i=2;i<array.length;i++){
            array[i]=array[i-1]+array[i-2];
        }

        //求數組的最後一個元素
        System.out.println(array[array.length-1]);
    }
}

評委打分案例

假設跳水運動中,鍵盤錄入6個評委分別給運動員打分,每一個評委給出的分數是0~10分,按照規則需要去掉最高分,去掉最低分,然後計算平均分纔是該運動員最終得分。

/*
思路:
	1.鍵盤錄入6個整數[0,10],存儲到數組中
	2.求數組中元素的最大值
	3.求數組中元素的最小值
	4.求數組中元素的和,減去最大值和最小值
	5.求平均值
*/
public class Test6{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        //用來存鍵盤錄入的分數
        int[] array=new int[6];
        for(int i=0;i<6;i++){
            //把鍵盤錄入的整數,直接賦值給數組的元素。
            array[i]=sc.nextInt();
        }
        
        //求數組中元素的最大值
        int max=array[0];
        for(int i=1;i<array.length;i++){
            if(array[i]>max){
                max=array[i];
            }
        }
        
        //求數組中元素的最小值
        int min=array[0];
        for(int i=1;i<array.length;i++){
            if(array[i]<min){
                min=array[i];
            }
        }
        
        //求數組中元素的和
        int sum=0;
        for(int i=0;i<array.length;i++){
            sum+=array[i];
        }
        
        //求去掉最大值和最小值後的平均值
        double avg=(sum-max-min)*1.0/(array.length-2)
        System.out.println("最終得分:"+avg);
    }
}

停車收費系統

停車場要做一個停車收費系統,收費標準是5元/小時,不足一小時按一小時算。鍵盤錄入停車的分鐘數,輸出對應的金額。

//鍵盤錄入停車的分鐘數
Scanner sc=new Scanner(System.in);
System.out.println("請輸入停車的分鐘數:");
int min=sc.nextInt();

//把分鐘轉換爲小時
int h;
if(min%60==0){ //整小時
    h=min/60;
}else{ //不是整小時
    h=min/60+1;
}

//計算金額
int money=h*5;
System.out.println("停車"+h+"小時,收費:"+money+"元"); 

雙色球彩票

雙色球彩票中,有33個紅球,16個籃球,隨機從33個紅球中選出6個數字,從16個籃球中選出1個 數字,組成一注彩票。

/*
分析:
	1)一注雙色球有7個數字組成,可以使用一個數組來存儲
	2)其中前6個數字是從33個紅球中來[1,33],後面1個數字是從16個藍球中來[1,16]
		從[1,33]的範圍內隨機生成6個整數,存儲到數組中
		從[1,16]的範圍內隨機生成1個整數,存儲到數組中
	3)最終把數組的元素組成一個字符串
*/
public class Demo2 {
    public static void main(String[] args) {
        //1)一注雙色球有7個數字組成,可以使用一個數組來存儲
        int[] array=new int[7];

        Random r=new Random();
        //從[1,33]的範圍內隨機生成6個整數,存儲到數組中
        int i=0;
        while (true){
            int num=r.nextInt(33)+1; //[0,32)+1 => [1,33]
            //查找num在數組中是否存在,如果得到索引說明存在,如果返回-1說明不存在。
            int index = getIndex(array, num);
            if(index==-1){
                array[i]=num;
                i++;
                if(i==6){
                    break;
                }
            }
        }

        //從[1,16]的範圍內隨機生成1個整數,存儲到數組中
        array[6]=r.nextInt(16)+1;

        //3)最終把數組的元素組成一個字符串
        String s1="紅球:";
        for (int j = 0; j < array.length; j++) {
            if(j<array.length-1){
                s1+=+array[j]+" ";
            }else {
                s1+="藍球:"+array[j]+" ";
            }
        }
        System.out.println(s1);
    }

    //查找一個數組中元素的索引,如果沒有找到返回-1
    public static int getIndex(int[] array,int key){
        for (int i = 0; i < array.length; i++) {
            if(array[i]==key){
                return i; //如果找到了,返回索引
            }
        }
        return -1; //如果返回-1,人爲規定是找不到的意思。
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章