Java基礎(chǔ)

<small>

猜字母游戲

為猜字母游戲添加游戲等級。游戲等級設(shè)為三等:5、7和9,代表所需要猜測的字母個數(shù)。游戲開始時,由玩家選擇游戲等級(5,7,9)。如果選擇7,則會隨機產(chǎn)生7個字符,然后玩家輸入一個字符串包含7個字符,看這7個字符和隨機產(chǎn)生的7個字符比較,看是否正確,并統(tǒng)計分?jǐn)?shù)。另外,如果輸入其它,重新提示輸入游戲等級。系統(tǒng)交互情況如圖所示:

package homework;

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

public class GussLetters {

    /**為猜字母游戲添加游戲等級。
     * 游戲等級設(shè)為三等:5、7和9,
     * 代表所需要猜測的字母個數(shù)。游戲開始時,
     * 由玩家選擇游戲等級(5,7,9)。
     * 如 果選擇7,則會隨機產(chǎn)生7個字符,
     * 然后玩家輸入一個字符串包含7個字符,
     * 看這7個字符和隨機產(chǎn)生的7個字符比較,
     * 看是否正確,并統(tǒng)計分?jǐn)?shù)。另外,如果輸入 其它,
     * 重新提示輸入游戲等級。
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("GussingGame>>歡迎嘗試猜字母游戲!");
        Scanner sc = new Scanner(System.in);
        //輸入游戲等級
        int level = getLevel(sc);
        
        //隨機產(chǎn)生level個字符
        char[] randomChars = getRandomChars(level);
        
        //游戲開始
        gameStart(sc, level, randomChars);
    }

    /**
     * 猜字母游戲
     *      控制臺輸入對應(yīng)級別的字符序列
     *      與隨機產(chǎn)生的字符序列進行對比。
     *      并將最后的對比結(jié)果進行打印。
     * @param sc 控制臺掃描器,用于進行控制臺猜字母掃描
     * @param level 對應(yīng)的游戲級別
     * @param randomChars 隨機產(chǎn)生的字符序列數(shù)組
     */
    private static void gameStart(Scanner sc, int level, char[] randomChars) {
        //游戲開始 
        //控制臺輸入所要猜的字母序列 start
        char[] gusseingChars = new char[level];
        //記錄總次數(shù)
        int totalGusseCount = 0;
        System.out.println("GussingGame>>游戲開始,請輸入您所猜的"+level+"個字母的序列:(exit-退出)");
        while(true){
            //輸入字符串
            String gusseingStr = sc.next();
            //輸入的是exit,則退出游戲
            if("exit".equals(gusseingStr)){
                break;
            }
            //如果輸入的字符串長度不等于level,輸入無效,重新輸入。
            if(gusseingStr.length() != level){
                System.out.println("GussingGame>>您的輸入字符個數(shù)有誤,請重新輸入:(exit-退出)");
                continue;
            }
            //將字符串轉(zhuǎn)成大寫,再轉(zhuǎn)換換成字符數(shù)組
            gusseingChars = 
                gusseingStr.toUpperCase().toCharArray();
            
            //隨機字符數(shù)組、人工猜測字符數(shù)組對比
            int[] rights = 
                checkChars(randomChars,gusseingChars);
            
            //結(jié)果打?。?                                                                                              //猜一次 加一次。
            System.out.println("GussingGame>>您猜對了"+rights[0]+"個字符,其中"+rights[1]+"個字符的位置正確!(總次數(shù)是"+(++totalGusseCount)+",exit-退出)");
            
            //都猜對了,自動結(jié)束
            if(rights[1] == level){
                break;
            }
            
        }
        //控制臺輸入所要猜的字母序列 end
    }

    /**
     * 產(chǎn)生隨機字符序列
     * @param level 游戲級別
     * @return 隨機字符序列數(shù)組
     */
    private static char[] getRandomChars(int level) {
        //隨機產(chǎn)生level個字符 start
        //隨機字符數(shù)組
        char[] randomChars = new char[level];
        char[] chars = {'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'}; 
        boolean[] randomIndexs = new boolean[chars.length];
        //隨機數(shù)
        Random ran = new Random();
        for(int i=0; i<randomChars.length; i++){
            int index = ran.nextInt(26);//[0,26)即[0,25]其中的整數(shù)
            //判斷該下標(biāo)對應(yīng)的字母是否已被取出
            if(randomIndexs[index]){
                //已經(jīng)取出,本次隨機無效,繼續(xù)本次隨機。
                i--;
                continue;
            }
            //本次隨機有效,取出子字母,并將對應(yīng)開關(guān)開啟。
            randomChars[i] = chars[index];
            randomIndexs[index] = true;
        }
        System.out.println(Arrays.toString(randomChars));
        //隨機產(chǎn)生level個字符 end
        return randomChars;
    }

    /**
     * 獲得游戲級別
     * @param sc 控制臺掃描器,掃描輸入的游戲級別
     * @return 游戲級別
     */
    private static int getLevel(Scanner sc) {
        int level = 0;
        //輸入游戲級別
        while(true){
            System.out.print("GussingGame>>請輸入游戲級別(5、7、9)?");
            level = sc.nextInt();
            //如果輸入的是5、7、9,則退出循環(huán)。
            if(level==5 || level==7 || level==9){
                break;
            }
        }
        return level;
    }
    
    /**
     * 隨機字符序列數(shù)組、控制臺人工猜測字符序列數(shù)組
     *  對比方法
     * @param randomChars 隨機字符序列數(shù)組
     * @param gusseingChars 控制臺人工猜測字符序列數(shù)組
     * @return new int[]{猜對字符的個數(shù),猜對字符的位置個數(shù)}
     */
    private static int[] checkChars(char[] randomChars, char[] gusseingChars){
        //隨機數(shù)組、人工輸入數(shù)組進行對比  start
        int rightNumber = 0;
        int rightIndex = 0;
        for(int i=0; i<randomChars.length; i++){//控制輪數(shù)
            for(int j=0; j<gusseingChars.length; j++){//控制每輪次數(shù)
                if(randomChars[i] == gusseingChars[j]){
                    //猜對字母
                    rightNumber ++;
                    if(i == j){
                        //猜對位置
                        rightIndex ++;
                    }
                }
            }
        }
        //隨機數(shù)組、人工輸入數(shù)組進行對比  end
        return new int[]{rightNumber,rightIndex};
    }
}

質(zhì)數(shù)判斷輸出

輸入一個數(shù),輸出小于這個數(shù)的所有質(zhì)數(shù)
package com.ksxx.corejava.day04.pm;

import java.util.Scanner;

public class LianXi10 {

    /**
     * 質(zhì)數(shù)
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("請輸入查找質(zhì)數(shù)的范圍2~");
        //獲取質(zhì)數(shù)范圍2~num
        Scanner scan=new Scanner(System.in);
        int num=scan.nextInt();
        int count=0;//質(zhì)數(shù)的計數(shù)
        //循環(huán)判斷質(zhì)數(shù)開始
        for(int i=2;i<=num;i++){
            boolean flag=true;          
            for(int j=2;j<=Math.sqrt(i);j++){
                if(i%j==0){
                    flag=false;
                      break;
                }
            }
            //判斷質(zhì)數(shù)結(jié)束
                if(flag){
                    count++;
                    System.out.print(i+" ");
                    if(count%10==0){
                        System.out.println();
                    }
                }
            }
        System.out.println("\n共有"+count+"個質(zhì)數(shù)");
    }
}

冒牌排序

package com.ksxx.corejava.day07.pm;

import java.util.Arrays;

/**
 * 冒泡算法:
 *  兩兩比較,大的后移。
 *  每一輪冒出一個最大數(shù),直到排序結(jié)束。
 * @author chengcheng
 *
 */
public class Demo01 {

    public static void main(String[] args) {
        int[] nums = {1,2,3,4,6,5};
        System.out.println("原數(shù)組:"+Arrays.toString(nums));
        System.out.println("***********************start");
        
        for( int i=0; i<nums.length-1 ; i++){//外層循環(huán)控制行(輪數(shù))
            System.out.println(nums.length+"個數(shù),第"+(i+1)+"輪:");
            for( int j=0; j<nums.length-i-1 ; j++){//內(nèi)存循環(huán)控制列(每輪次數(shù))
                //兩兩比較,大的后移
                if(nums[j]<nums[j+1]){
                    int temp = nums[j+1];
                    nums[j+1] = nums[j];
                    nums[j] = temp;
                }
                System.out.println('\t'+"第"+(j+1)+"次結(jié)果:"+Arrays.toString(nums));
            }
        }
        System.out.println("***********************end");
        
        System.out.println("經(jīng)過冒泡算法排序后數(shù)組:"+Arrays.toString(nums));
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在經(jīng)過一次沒有準(zhǔn)備的面試后,發(fā)現(xiàn)自己雖然寫了兩年的android代碼,基礎(chǔ)知識卻忘的差不多了。這是程序員的大忌,沒...
    猿來如癡閱讀 3,131評論 3 10
  • Java基礎(chǔ)常見英語詞匯(共70個)['?bd?ekt] ['?:rientid]導(dǎo)向的 ...
    今夜子辰閱讀 3,498評論 1 34
  • 1. 數(shù)據(jù)流 1.1 概述 數(shù)據(jù)流是操作基本數(shù)據(jù)類型的流,分為數(shù)據(jù)輸入流,數(shù)據(jù)輸出流。 1.2 數(shù)據(jù)輸入流 1、D...
    JackChen1024閱讀 518評論 0 2
  • 1.HashMap和HashTable的區(qū)別 [x] HashMap去掉了contains方法 [x] HashT...
    左神話閱讀 1,114評論 4 15
  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,723評論 4 12

友情鏈接更多精彩內(nèi)容