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的更多相关文章

  1. day06-java-(方法,猜字符小游戏)

    day05-java-(方法,猜字符小游戏) 1.方法:  1)用于封装一段特定的逻辑功能  2)方法应尽可能的独立,只干一件事  3)方法可以被反复的调用多次  4)避免代码重复,有利于代码的维护, ...

  2. java转换 HTML字符实体,java特殊字符转义字符串

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  3. 猜字母游戏(Java)

    我的代码: package day20181025; import java.util.Arrays; import java.util.Scanner; /** * 猜字母 * @author Ad ...

  4. 最新 乐游网络java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.乐游网络等10家互联网公司的校招Offer,因为某些自身原因最终选择了乐游网络.6.7月主要是做系统复习.项目复盘.Leet ...

  5. 【字符编码】Java字符编码详细解答及问题探讨

    一.前言 继上一篇写完字节编码内容后,现在分析在Java中各字符编码的问题,并且由这个问题,也引出了一个更有意思的问题,笔者也还没有找到这个问题的答案.也希望各位园友指点指点. 二.Java字符编码 ...

  6. 【字符编码】Java编码格式探秘

    一.前言 在分析Comparable和Comparator的时候,分析到了String类的compareTo方法,String底层是用char[]数组来存放元素,在比较的时候是比较的两个字符串的字符, ...

  7. 牛客网程序员面试金典:1.1确定字符互异(java实现)

    问题描述: 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同, ...

  8. 【java】io流之字节流转为字符流:java.io.OutputStreamWriter和java.io.InputStreamReader

    package 文件操作; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; impo ...

  9. 【java】io流之字符输出流:java.io.Writer类及子类的子类java.io.FileWriter

    package 文件操作; import java.io.File; import java.io.FileWriter; import java.io.IOException; import jav ...

随机推荐

  1. 简单又高效的Access分页语句

    转自:http://www.ljf.cn/archives/2281 Access实现分页其实也可以在查询语句里面做. 除了流行的top分页法之外,其实还有一种更简单,更容易理解,并且效率也不低的分页 ...

  2. DeepLearning学习(1)--多层感知机

    想直接学习卷积神经网络,结果发现因为神经网络的基础较弱,学习起来比较困难,所以准备一步步学.并记录下来,其中会有很多摘抄. (一)什么是多层感知器和反向传播 1,单个神经元 神经网络的基本单元就是神经 ...

  3. 图解直方图均衡化及其Python实现

    在理解直方图均衡化的过程中,参考了一些书籍和博客,让人困惑的是,笔者对于直方图的理解还是停留在表面,并没有深入理解其内涵.因此,本文拟结合图片对直方图的概念进行阐述,并给出其Python实现,最后对她 ...

  4. scala 学习之:List fold, foldLeft方法

    先从一道题开始看: Eliminate consecutive duplicates of list elements. If a list contains repeated elements th ...

  5. MySql索引简介

    从"找"到B+树 索引是用来查找的. 折半查找是一种很优秀的方式.适合于 范围查找,固有缺点就是需要元素是有序的.二叉搜索树就是对折半查找的一种基础的实现. 但二叉搜索树当遇到特殊 ...

  6. Newtonsoft.Json高级用法(转)

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  7. 第四章 ngrok使用

    网址(下载):http://www.ngrok.cc/ 注册:http://www.ngrok.cc/login 管理后台:http://www.ngrok.cc/user.html 创建隧道,产生隧 ...

  8. jquery验证

    首先要引用js库 <script src="js/jquery-1.7.2.min.js"></script> jquery验证方式 function ch ...

  9. Textrank算法介绍

    先说一下自动文摘的方法.自动文摘(Automatic Summarization)的方法主要有两种:Extraction和Abstraction.其中Extraction是抽取式自动文摘方法,通过提取 ...

  10. asp.net 页面如何将Eval中的时间显示为“yyyy-MM-dd ” 格式

    <table> <tr>    <td style="width:273px;color:#105db5;" valign="top&quo ...