java方法-----猜字母案例

来源:互联网 发布:windows10 配置mysql 编辑:程序博客网 时间:2024/06/05 18:49

第二篇文章
之前通过冒泡排序已经无意间涉及了for循环、数组、数组排序和方法多个java 的基础层次,这篇文章通过“猜字母”在深部了解一下java的方法。
游戏规则:系统随机生成五个不同字母,然后用户输入字母(不区分大小写),会根据对比结果,输出对了几个字母和位置对了几个。


总代码=main+check+generate

1. 用generate方法随机生成字母数组(chs数组)

flag[]数组是用来判断letters[]中字母是否被选中过,目的是为了选出五个不同的字母。

//生成随机字母    public static char[] generate() {        char[] chs=new char[5];        boolean[] flag=new boolean[26];        int x=0;        char[] letters={ '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' };        for(int i=0;i<chs.length;i++){            do{                x=(int)(Math.random()*letters.length);            }while(flag[x]);            chs[i]=letters[x];            flag[x]=true;        }        return chs;    }

2. 输入字母(input数组)与chs数组用check方法比较

双重for循环判断,首先通过数组两两遍历判断字母是否有相同的,然后通过数组下标判断位置是否相同。

//比对    public static int[] Check(char chs[],char input[]) {        int[] result=new int[2];        for(int i=0;i<chs.length;i++){            for(int j=0;j<input.length;j++){                if(chs[i]==input[j]){                    result[1]++;                    if(i==j) result[0]++;                    break;                }            }        }        return result;    }

3. main方法中实现多次输入、比对


在while中反复执行输入,check和结果输出,
ps:exit是退出游戏,其中有作弊代码,有标注

    public static void main(String[] args) {        int count=0;        int score=500;        Scanner scan=new Scanner(System.in);        int[] result=new int[2];        char[] chs=generate();        char[] input=new char[5];        //作弊代码,会把随机生成的数组输出        System.out.println(chs);        while(true){            String str=scan.next().toUpperCase();            if(str.equals("EXIT")){                System.out.println("欢迎下次再来");                break;            }            input=str.toCharArray();            result=Check(chs, input);            if(result[0]==chs.length){                System.out.println("恭喜你答对了");                break;            }            else                System.out.println("猜对"+result[1]+"字母"+"猜对"+result[0]+"个位置");        }    }

4.总代码

ps:exit是退出游戏,其中有作弊代码,有标注

import java.util.Scanner;public class Guessing {    public static void main(String[] args) {        int count=0;        int score=500;        Scanner scan=new Scanner(System.in);        int[] result=new int[2];        char[] chs=generate();        char[] input=new char[5];        System.out.println(chs);        while(true){            String str=scan.next().toUpperCase();            if(str.equals("EXIT")){                System.out.println("欢迎下次再来");                break;            }            input=str.toCharArray();            result=Check(chs, input);            if(result[0]==chs.length){                System.out.println("恭喜你答对了");                break;            }            else                System.out.println("猜对"+result[1]+"字母"+"猜对"+result[0]+"个位置");        }    }    public static char[] generate() {        char[] chs=new char[5];        boolean[] flag=new boolean[26];        int x=0;        char[] letters={ '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' };        for(int i=0;i<chs.length;i++){            do{                x=(int)(Math.random()*letters.length);            }while(flag[x]);            chs[i]=letters[x];            flag[x]=true;        }        return chs;    }    public static int[] Check(char chs[],char input[]) {        int[] result=new int[2];        for(int i=0;i<chs.length;i++){            for(int j=0;j<input.length;j++){                if(chs[i]==input[j]){                    result[1]++;                    if(i==j) result[0]++;                    break;                }            }        }        return result;    }}

过两天会开始写面向对象编程的案例“俄罗斯方块”,欢迎私信、评论。


互勉

原创粉丝点击