猜字符游戏之java
package days06;
//需求。。。。。。,问题,为什么要用do{}while???
import java.util.Scanner;
public class RepeatOfGussingGame {
public static void main(String[] args) {
		/*在main()函数中,需要制造一个死循环,目的是:假如用户猜错了重新猜,猜对了跳出(break),错了反复猜
		 *注意: 因为用户输入的是字符串,我们在check方法中比较的是数组,需要将字符串转为字符数组
		 *加入等级,实则增加难度,字母越多难度越大,直接将随机生成的字母加入变化的int参数值,在做相应的判断和变换即可
		 */
		Scanner scan = new Scanner(System.in);
		int count = 0;
		
		//char[] chs = genran();			    //接收,调用
				    //调试输出
		System.out.println("游戏开始!");
		 // 表示游戏等级,默认为5
        int level = 5;
        do {
            System.out.println("GuessingGame>请输入游戏级别(5、7、9)?");
            level = scan.nextInt();
        } while (level != 5 && level != 7 && level != 9);
        // 表示猜测的字符串
        char[] chs = genran(level);
        System.out.println(chs);
		while(true){					    //自造死循环,错了一直猜,对了就跳出循环,
			System.out.println("猜吧!");
			String str = scan.next();       //接收输入的字符串
			char[] input =str.toCharArray();//转换为字符数组,下一步调用比较方法接收结果
			int[] result = check(chs,input);
			if(result[1]==chs.length){      //假如位置对了
				int score = result[0]*100-count*10;
				System.out.println("恭喜你,猜对了!得分:"+score);
				break;
			}else{
				System.out.println("位置对了"+result[1]+"个,字符对了"+result[0]+"个!");
				count++;
			}
		}
	}
	//随机输入
	public static char[] genran(int level){
		char[] chs 	   = new char[level];
		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'};
		boolean[] flags = new boolean[letters.length];//默认false,开关标志
		for(int i=0;i<chs.length;i++){
			int index;
			do{
				index = (int)(Math.random()*letters.length);
			}while(flags[index]==true);
			chs[i]= letters[index];
			flags[index] = true;
		}
		
		return chs;
	}
	//对比
	public static int[] check(char[] chs,char[] input){
		int[] result = new int[2];//result[1]位置,result[0]字符对
		for(int i=0;i<chs.length;i++){	//两层循环
			for(int j=0;j<input.length;j++){
				if(chs[i]==input[j]){ 	//比较字符对不对
					result[0]++;
					if(i==j){           //位置 
						result[1]++;
						break;
					}
				}
			}
		}
		
		return result;
	}
}
猜字符游戏之java的更多相关文章
- day06-java-(方法,猜字符小游戏)
		day05-java-(方法,猜字符小游戏) 1.方法: 1)用于封装一段特定的逻辑功能 2)方法应尽可能的独立,只干一件事 3)方法可以被反复的调用多次 4)避免代码重复,有利于代码的维护, ... 
- java转换 HTML字符实体,java特殊字符转义字符串
		为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ... 
- 猜字母游戏(Java)
		我的代码: package day20181025; import java.util.Arrays; import java.util.Scanner; /** * 猜字母 * @author Ad ... 
- 最新  乐游网络java校招面经 (含整理过的面试题大全)
		从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.乐游网络等10家互联网公司的校招Offer,因为某些自身原因最终选择了乐游网络.6.7月主要是做系统复习.项目复盘.Leet ... 
- 【字符编码】Java字符编码详细解答及问题探讨
		一.前言 继上一篇写完字节编码内容后,现在分析在Java中各字符编码的问题,并且由这个问题,也引出了一个更有意思的问题,笔者也还没有找到这个问题的答案.也希望各位园友指点指点. 二.Java字符编码 ... 
- 【字符编码】Java编码格式探秘
		一.前言 在分析Comparable和Comparator的时候,分析到了String类的compareTo方法,String底层是用char[]数组来存放元素,在比较的时候是比较的两个字符串的字符, ... 
- 牛客网程序员面试金典:1.1确定字符互异(java实现)
		问题描述: 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同, ... 
- 【java】io流之字节流转为字符流:java.io.OutputStreamWriter和java.io.InputStreamReader
		package 文件操作; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; impo ... 
- 【java】io流之字符输出流:java.io.Writer类及子类的子类java.io.FileWriter
		package 文件操作; import java.io.File; import java.io.FileWriter; import java.io.IOException; import jav ... 
随机推荐
- java打包成jar,但不打包配置文件
			有时候我们做java project的时候,都会打包成jar程序,为了方便部署会加个配置文件conf/pro.properties(conf文件夹与src文件夹同级) 但是不想打包进jar.其实用ec ... 
- HTML5标签的3大类型
			1>块级标签: 独占一行的标签,能随时设置宽度和高度 比如:div.p.h1.h2.u1.li 2>行内标签(内联标签): 多个行内标签能同时显示在一行,宽度和高度取决于内容的尺寸 比如: ... 
- PDF的信息表达原理及特点分析
			一.PDF概述 PDF(Portable Document Format)是一种结构化的文档格式.它由美国著名排版与图像处理软件Adobe公司于1993年首次发布(1.0版),并于同年推出了其相应的支 ... 
- C语言深度挖掘
			二级指针和回调函数的用法: #include <stdio.h> #include <stdlib.h> int add(int num1 ,int num2){ return ... 
- ROW_NUMBER() OVER的用法
			语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) //PARTITION 分割 一.ROW_NUMBER() OVER ... 
- iOS基础-NSString及NSMutableString剖析
			一.NSString头文件 NSString : NSObject 实现协议: NSCopying/NSMutableCopying/NSSecureCoding 类别: //扩展类别 NSStrin ... 
- 'Missing recommended icon file - The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format'
			创建120像素的高分辨率和60个像素定期如上,苹果文档中提到,并设置名称的新图标.例如,icon-120.png和icon-152.png. 将这个图标到你的项目资源文件夹并添加该图标到项目: 在此之 ... 
- linux python升级和ipython的安装
			==CentOS 6.X 自带的python版本是 2.6 , 由于工作需要,很多时候需要2.7版本.所以需要进行版本升级.由于一些系统工具和服务是对 Python 有依赖的,所以升级 Python ... 
- ng-init,ng-controller,ng-model
			1.ng-init 用于初始化数据,跟在$scope插入数据一样,但是在配合repeat指令时候比较有用: <div ng-repeat="arrOuter in arr" ... 
- Linq To Nhibernate 性能优化(入门级)
			最近都是在用Nhibernate和数据库打交道,说实话的,我觉得Nhibernate比Ado.Net更好用,但是在对于一些复杂的查询Nhibernate还是比不上Ado.Net.废话不多说了,下面讲讲 ... 
