Java基礎(chǔ)

<small>

猜字母游戲

為猜字母游戲添加游戲等級(jí)。游戲等級(jí)設(shè)為三等:5屈雄、7和9村视,代表所需要猜測(cè)的字母?jìng)€(gè)數(shù)。游戲開始時(shí)酒奶,由玩家選擇游戲等級(jí)(5蚁孔,7奶赔,9)。如果選擇7杠氢,則會(huì)隨機(jī)產(chǎn)生7個(gè)字符站刑,然后玩家輸入一個(gè)字符串包含7個(gè)字符,看這7個(gè)字符和隨機(jī)產(chǎn)生的7個(gè)字符比較鼻百,看是否正確绞旅,并統(tǒng)計(jì)分?jǐn)?shù)。另外温艇,如果輸入其它因悲,重新提示輸入游戲等級(jí)。系統(tǒng)交互情況如圖所示:

package homework;

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

public class GussLetters {

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

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

    /**
     * 產(chǎn)生隨機(jī)字符序列
     * @param level 游戲級(jí)別
     * @return 隨機(jī)字符序列數(shù)組
     */
    private static char[] getRandomChars(int level) {
        //隨機(jī)產(chǎn)生level個(gè)字符 start
        //隨機(jī)字符數(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];
        //隨機(jī)數(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)對(duì)應(yīng)的字母是否已被取出
            if(randomIndexs[index]){
                //已經(jīng)取出郁油,本次隨機(jī)無效本股,繼續(xù)本次隨機(jī)。
                i--;
                continue;
            }
            //本次隨機(jī)有效桐腌,取出子字母拄显,并將對(duì)應(yīng)開關(guān)開啟。
            randomChars[i] = chars[index];
            randomIndexs[index] = true;
        }
        System.out.println(Arrays.toString(randomChars));
        //隨機(jī)產(chǎn)生level個(gè)字符 end
        return randomChars;
    }

    /**
     * 獲得游戲級(jí)別
     * @param sc 控制臺(tái)掃描器案站,掃描輸入的游戲級(jí)別
     * @return 游戲級(jí)別
     */
    private static int getLevel(Scanner sc) {
        int level = 0;
        //輸入游戲級(jí)別
        while(true){
            System.out.print("GussingGame>>請(qǐng)輸入游戲級(jí)別(5躬审、7、9)蟆盐?");
            level = sc.nextInt();
            //如果輸入的是5承边、7、9石挂,則退出循環(huán)博助。
            if(level==5 || level==7 || level==9){
                break;
            }
        }
        return level;
    }
    
    /**
     * 隨機(jī)字符序列數(shù)組、控制臺(tái)人工猜測(cè)字符序列數(shù)組
     *  對(duì)比方法
     * @param randomChars 隨機(jī)字符序列數(shù)組
     * @param gusseingChars 控制臺(tái)人工猜測(cè)字符序列數(shù)組
     * @return new int[]{猜對(duì)字符的個(gè)數(shù)痹愚,猜對(duì)字符的位置個(gè)數(shù)}
     */
    private static int[] checkChars(char[] randomChars, char[] gusseingChars){
        //隨機(jī)數(shù)組富岳、人工輸入數(shù)組進(jìn)行對(duì)比  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]){
                    //猜對(duì)字母
                    rightNumber ++;
                    if(i == j){
                        //猜對(duì)位置
                        rightIndex ++;
                    }
                }
            }
        }
        //隨機(jī)數(shù)組、人工輸入數(shù)組進(jìn)行對(duì)比  end
        return new int[]{rightNumber,rightIndex};
    }
}

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

輸入一個(gè)數(shù)拯腮,輸出小于這個(gè)數(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("請(qǐng)輸入查找質(zhì)數(shù)的范圍2~");
        //獲取質(zhì)數(shù)范圍2~num
        Scanner scan=new Scanner(System.in);
        int num=scan.nextInt();
        int count=0;//質(zhì)數(shù)的計(jì)數(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+"個(gè)質(zhì)數(shù)");
    }
}

冒牌排序

package com.ksxx.corejava.day07.pm;

import java.util.Arrays;

/**
 * 冒泡算法:
 *  兩兩比較窖式,大的后移。
 *  每一輪冒出一個(gè)最大數(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+"個(gè)數(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)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阁簸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子哼丈,更是在濱河造成了極大的恐慌启妹,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件削祈,死亡現(xiàn)場(chǎng)離奇詭異翅溺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)髓抑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門咙崎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吨拍,你說我怎么就攤上這事褪猛。” “怎么了羹饰?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵伊滋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我队秩,道長(zhǎng)笑旺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任馍资,我火速辦了婚禮筒主,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸟蟹。我一直安慰自己乌妙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布建钥。 她就那樣靜靜地躺著藤韵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪熊经。 梳的紋絲不亂的頭發(fā)上泽艘,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音奈搜,去河邊找鬼悉盆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛馋吗,可吹牛的內(nèi)容都是我干的焕盟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宏粤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼脚翘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绍哎,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤来农,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后崇堰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沃于,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涩咖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了繁莹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檩互。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖咨演,靈堂內(nèi)的尸體忽然破棺而出闸昨,到底是詐尸還是另有隱情,我是刑警寧澤薄风,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布饵较,位于F島的核電站,受9級(jí)特大地震影響遭赂,放射性物質(zhì)發(fā)生泄漏循诉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一撇他、第九天 我趴在偏房一處隱蔽的房頂上張望打洼。 院中可真熱鬧,春花似錦逆粹、人聲如沸募疮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阿浓。三九已至,卻和暖如春蹋绽,著一層夾襖步出監(jiān)牢的瞬間芭毙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工卸耘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留退敦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓蚣抗,卻偏偏與公主長(zhǎng)得像侈百,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翰铡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

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