Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
给你学习路线:html-css-js-jq-javase-数据库-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm
小编推荐一个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
/*
* 猜字母游戏
* 要求:
* 1,系统随机生成5个不同的字母
* 2,用户输入5个不同的字母去匹配
* 3,输出结果包括正确字母个数和正确位置个数
* 4,统计得分,总共500分,错一次扣10分
* 5,输入EXIT退出游戏
* */
/*
* 分析:
* 数据结构:
* 采用数组来存储字母
* 第一步:产生5个不同的字母
* 用方法实现generate()
* 随机产生字母的方法Java没有提供,需要自己设计:
* 可以随机产生数字做数组的下表。
* 第二步:比较两个数组的字母check()
* 判断字母对的个数和位置对的个数
*
* 第三步:main()函数
* 输出结果
* */
package day06;
import java.util.Scanner;
public class Guessing {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.println("游戏开始啦----->ready go......");
char[] chs = generate();
//作弊,提示正确答案
//注意因为"要猜的字母是:"和chs不能写在同一个输出语句中
System.out.print("提示:要猜的字母是:");
System.out.println(chs);//专门打印出数组,Java给出的功能
int count=0;//标记猜错的次数
while(true){//这里创建while循环是为了后面break跳出循环,因为是exit就不需要进入循环了,
//同时猜对了也要跳出,不然就是死循环了还会让你继续猜
System.out.println("写出你猜的字母:");
//然后用户输入字母
String str = scan.next().toUpperCase();//对输入的字母不区分大小写,因为会转化为大写
if(str.equals("EXIT")){
System.out.println("欢迎下次再来!!!");
break;
}
char[] input = str.toCharArray();//转化为数组
//比较
int[] result = check(chs,input);
System.out.println("字母正确个数是:"+result[1]);
System.out.println("位置正确个数是:"+result[0]);
//添加一个得分功能的话上面的代码需要修改
//判断猜对了只要是猜对的位置个数是5就行
if(result[0]==chs.length){
System.out.println("恭喜你猜对了!!!");
int score = chs.length*100-count*10;
System.out.println("你的得分是:"+score);
break;
}
else{
count++;
//System.out.println("你的答案中字母正确个数为:"+result[1]+",位置正确个数为:"+result[0]);
}
}
}
/*
*
* */
public static char[] generate(){//看到不是viod就必须有返回
char[] chs = new char[5];
char[] array = new char[]{'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'};
//int index = (int)(Math.random()*array.length);产生随机值一定要放在循环体里面,否则的话可能一直产生某一个值不进入赋值
//int index = (int)(Math.random()*array.length);//一共有26个字母
boolean[] flags = new boolean[array.length];//默认值为false,给array每个元素标记
//给chs元素赋值
for(int i=0;i
//chs[i]=array[index];//这里如果就这样的话会可能产生相同的字母,不符合要求,代码需要修正,采用标记的方法来修正
小编推荐一个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
/*
* 给array中每个元素标记false,当取到了某个字母时候,对其进行标记true不再访问
* 这里要使用到循环,do……while适合在这里,第一遍是必须要走的
* */
int index;//必须声明
do{
index = (int)(Math.random()*array.length);//一共有26个字母
}while(flags[index]==true);
chs[i]=array[index];
flags[index]=true;
}
return chs;
}
/*
* 比较两个数组,采用数组来获得结果
* 比较获得的结果有两个
* 一个是字母相同数
* 一个是位置相同数
* 所以采用一个长度为2的数组来存储
* */
public static int[] check(char[] chs,char[] input){//看到不是viod就必须有返回
int[] result = new int[2];//默认值result[0]=0,result[1]=0
//result[0]存储位置相同的个数result[1]存储字母相同的个数
//两个数组的每个元素都要比较,从chs的第一个开始逐一跟input的每一个比较,for循环嵌套
for(int i=0;i
for(int j=0;j
//开始比较
if(chs[i]==input[j]){//找到相同字母,跳出最里面的循环
result[1]++;
if(i==j){//位置相同
result[0]++;
}
break;
}
}
}
return result;
}
}
程序运行结果演示
程序运行结果演示
程序运行结果演示
小编推荐一个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
程序运行结果演示程序运行结果演示