java方法-----猜字母案例
2017-07-10 19:28
120 查看
第二篇文章
之前通过冒泡排序已经无意间涉及了for循环、数组、数组排序和方法多个java 的基础层次,这篇文章通过“猜字母”在深部了解一下java的方法。
游戏规则:系统随机生成五个不同字母,然后用户输入字母(不区分大小写),会根据对比结果,输出对了几个字母和位置对了几个。
总代码=main+check+generate
ps:exit是退出游戏,其中有作弊代码,有标注
过两天会开始写面向对象编程的案例“俄罗斯方块”,欢迎私信、评论。
互勉
之前通过冒泡排序已经无意间涉及了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.printl 4000 n("欢迎下次再来"); 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; } }
过两天会开始写面向对象编程的案例“俄罗斯方块”,欢迎私信、评论。
互勉
相关文章推荐
- java第七周实验封装一类对象English,该类对象具有一种功能printEnglish输出英文字母表。再封装一类对象Greek,该类必须是English的子类,该类对象不仅可以调用方法printE
- eclipse输入字母可以类提示(不用alt+/)和java方法设置快捷键
- java string 首字母大小写方法
- 微信公众平台应用开发:方法、技巧与案例--柳峰,Java语言版本
- Lambda表达式--Java8的新功能案例详解(2) Lambda表达式的方法引用
- Java中统计字符串中大写、小写字母以及非英文字母数的N种方法
- Java字符串首字母大写-高效方法
- javaweb-servlet-params方法的几种案例
- java汉字转拼音以及得到首字母通用方法
- 在一段英文字母中找出每个字母重复数量的方法(Java)
- Eclipse 在编写java代码时打印每个字母都会提示的设置方法
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)
- java代码实现鼠标双击出现画图-----------paint()方法由系统自动调用,且一定是小写的字母p
- JAVA基础学习之流的简述及演示案例、用缓冲区方法buffer读写文件、File类对象的使用、Serializable标记接口(6)
- 黑马程序员-java-类,java内部类-java构造方法-案例
- 两种方法利用Java生成唯一ID,取当前时间与字母随机组合,并发少的情况足以胜任
- Java面向对象【经典案例】类的属性是属于对象的,方法是动态绑定到对象的
- java string 首字母大写方法
- Java中的大小写字母相互转换(不利用Java自带的方法)
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)