Java基础

<small>

猜字母游戏

为猜字母游戏添加游戏等级。游戏等级设为三等:5、7和9,代表所需要猜测的字母个数。游戏开始时,由玩家选择游戏等级(5,7,9)。如果选择7,则会随机产生7个字符,然后玩家输入一个字符串包含7个字符,看这7个字符和随机产生的7个字符比较,看是否正确,并统计分数。另外,如果输入其它,重新提示输入游戏等级。系统交互情况如图所示:

package homework;

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

public class GussLetters {

    /**为猜字母游戏添加游戏等级。
     * 游戏等级设为三等:5、7和9,
     * 代表所需要猜测的字母个数。游戏开始时,
     * 由玩家选择游戏等级(5,7,9)。
     * 如 果选择7,则会随机产生7个字符,
     * 然后玩家输入一个字符串包含7个字符,
     * 看这7个字符和随机产生的7个字符比较,
     * 看是否正确,并统计分数。另外,如果输入 其它,
     * 重新提示输入游戏等级。
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("GussingGame>>欢迎尝试猜字母游戏!");
        Scanner sc = new Scanner(System.in);
        //输入游戏等级
        int level = getLevel(sc);
        
        //随机产生level个字符
        char[] randomChars = getRandomChars(level);
        
        //游戏开始
        gameStart(sc, level, randomChars);
    }

    /**
     * 猜字母游戏
     *      控制台输入对应级别的字符序列
     *      与随机产生的字符序列进行对比。
     *      并将最后的对比结果进行打印。
     * @param sc 控制台扫描器,用于进行控制台猜字母扫描
     * @param level 对应的游戏级别
     * @param randomChars 随机产生的字符序列数组
     */
    private static void gameStart(Scanner sc, int level, char[] randomChars) {
        //游戏开始 
        //控制台输入所要猜的字母序列 start
        char[] gusseingChars = new char[level];
        //记录总次数
        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>>您的输入字符个数有误,请重新输入:(exit-退出)");
                continue;
            }
            //将字符串转成大写,再转换换成字符数组
            gusseingChars = 
                gusseingStr.toUpperCase().toCharArray();
            
            //随机字符数组、人工猜测字符数组对比
            int[] rights = 
                checkChars(randomChars,gusseingChars);
            
            //结果打印:                                                                                               //猜一次 加一次。
            System.out.println("GussingGame>>您猜对了"+rights[0]+"个字符,其中"+rights[1]+"个字符的位置正确!(总次数是"+(++totalGusseCount)+",exit-退出)");
            
            //都猜对了,自动结束
            if(rights[1] == level){
                break;
            }
            
        }
        //控制台输入所要猜的字母序列 end
    }

    /**
     * 产生随机字符序列
     * @param level 游戏级别
     * @return 随机字符序列数组
     */
    private static char[] getRandomChars(int level) {
        //随机产生level个字符 start
        //随机字符数组
        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];
        //随机数
        Random ran = new Random();
        for(int i=0; i<randomChars.length; i++){
            int index = ran.nextInt(26);//[0,26)即[0,25]其中的整数
            //判断该下标对应的字母是否已被取出
            if(randomIndexs[index]){
                //已经取出,本次随机无效,继续本次随机。
                i--;
                continue;
            }
            //本次随机有效,取出子字母,并将对应开关开启。
            randomChars[i] = chars[index];
            randomIndexs[index] = true;
        }
        System.out.println(Arrays.toString(randomChars));
        //随机产生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,则退出循环。
            if(level==5 || level==7 || level==9){
                break;
            }
        }
        return level;
    }
    
    /**
     * 随机字符序列数组、控制台人工猜测字符序列数组
     *  对比方法
     * @param randomChars 随机字符序列数组
     * @param gusseingChars 控制台人工猜测字符序列数组
     * @return new int[]{猜对字符的个数,猜对字符的位置个数}
     */
    private static int[] checkChars(char[] randomChars, char[] gusseingChars){
        //随机数组、人工输入数组进行对比  start
        int rightNumber = 0;
        int rightIndex = 0;
        for(int i=0; i<randomChars.length; i++){//控制轮数
            for(int j=0; j<gusseingChars.length; j++){//控制每轮次数
                if(randomChars[i] == gusseingChars[j]){
                    //猜对字母
                    rightNumber ++;
                    if(i == j){
                        //猜对位置
                        rightIndex ++;
                    }
                }
            }
        }
        //随机数组、人工输入数组进行对比  end
        return new int[]{rightNumber,rightIndex};
    }
}

质数判断输出

输入一个数,输出小于这个数的所有质数
package com.ksxx.corejava.day04.pm;

import java.util.Scanner;

public class LianXi10 {

    /**
     * 质数
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("请输入查找质数的范围2~");
        //获取质数范围2~num
        Scanner scan=new Scanner(System.in);
        int num=scan.nextInt();
        int count=0;//质数的计数
        //循环判断质数开始
        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;
                }
            }
            //判断质数结束
                if(flag){
                    count++;
                    System.out.print(i+" ");
                    if(count%10==0){
                        System.out.println();
                    }
                }
            }
        System.out.println("\n共有"+count+"个质数");
    }
}

冒牌排序

package com.ksxx.corejava.day07.pm;

import java.util.Arrays;

/**
 * 冒泡算法:
 *  两两比较,大的后移。
 *  每一轮冒出一个最大数,直到排序结束。
 * @author chengcheng
 *
 */
public class Demo01 {

    public static void main(String[] args) {
        int[] nums = {1,2,3,4,6,5};
        System.out.println("原数组:"+Arrays.toString(nums));
        System.out.println("***********************start");
        
        for( int i=0; i<nums.length-1 ; i++){//外层循环控制行(轮数)
            System.out.println(nums.length+"个数,第"+(i+1)+"轮:");
            for( int j=0; j<nums.length-i-1 ; j++){//内存循环控制列(每轮次数)
                //两两比较,大的后移
                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)+"次结果:"+Arrays.toString(nums));
            }
        }
        System.out.println("***********************end");
        
        System.out.println("经过冒泡算法排序后数组:"+Arrays.toString(nums));
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 在经过一次没有准备的面试后,发现自己虽然写了两年的android代码,基础知识却忘的差不多了。这是程序员的大忌,没...
    猿来如痴阅读 2,829评论 3 10
  • Java基础常见英语词汇(共70个)['ɔbdʒekt] ['ɔ:rientid]导向的 ...
    今夜子辰阅读 3,265评论 1 34
  • 1. 数据流 1.1 概述 数据流是操作基本数据类型的流,分为数据输入流,数据输出流。 1.2 数据输入流 1、D...
    JackChen1024阅读 463评论 0 2
  • 1.HashMap和HashTable的区别 [x] HashMap去掉了contains方法 [x] HashT...
    仇诺伊阅读 1,035评论 4 15
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,586评论 4 12