Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言。Java 技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計算機、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。
給你學(xué)習(xí)路線:html-css-js-jq-javase-數(shù)據(jù)庫-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm

小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零,五五四,六零七 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
/*
* 猜字母游戲
* 要求:
* 1,系統(tǒng)隨機生成5個不同的字母
* 2,用戶輸入5個不同的字母去匹配
* 3,輸出結(jié)果包括正確字母個數(shù)和正確位置個數(shù)
* 4,統(tǒng)計得分,總共500分,錯一次扣10分
* 5,輸入EXIT退出游戲
* */
/*
* 分析:
* 數(shù)據(jù)結(jié)構(gòu):
* 采用數(shù)組來存儲字母
* 第一步:產(chǎn)生5個不同的字母
* 用方法實現(xiàn)generate()
* 隨機產(chǎn)生字母的方法Java沒有提供,需要自己設(shè)計:
* 可以隨機產(chǎn)生數(shù)字做數(shù)組的下表。
* 第二步:比較兩個數(shù)組的字母check()
* 判斷字母對的個數(shù)和位置對的個數(shù)
*
* 第三步:main()函數(shù)
* 輸出結(jié)果
* */
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);//專門打印出數(shù)組,Java給出的功能
int count=0;//標(biāo)記猜錯的次數(shù)
while(true){//這里創(chuàng)建while循環(huán)是為了后面break跳出循環(huán),因為是exit就不需要進入循環(huán)了,
//同時猜對了也要跳出,不然就是死循環(huán)了還會讓你繼續(xù)猜
System.out.println("寫出你猜的字母:");
//然后用戶輸入字母
String str = scan.next().toUpperCase();//對輸入的字母不區(qū)分大小寫,因為會轉(zhuǎn)化為大寫
if(str.equals("EXIT")){
System.out.println("歡迎下次再來?。?!");
break;
}
char[] input = str.toCharArray();//轉(zhuǎn)化為數(shù)組
//比較
int[] result = check(chs,input);
System.out.println("字母正確個數(shù)是:"+result[1]);
System.out.println("位置正確個數(shù)是:"+result[0]);
//添加一個得分功能的話上面的代碼需要修改
//判斷猜對了只要是猜對的位置個數(shù)是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("你的答案中字母正確個數(shù)為:"+result[1]+",位置正確個數(shù)為:"+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);產(chǎn)生隨機值一定要放在循環(huán)體里面,否則的話可能一直產(chǎn)生某一個值不進入賦值
//int index = (int)(Math.random()*array.length);//一共有26個字母
boolean[] flags = new boolean[array.length];//默認值為false,給array每個元素標(biāo)記
//給chs元素賦值
for(int i=0;i
//chs[i]=array[index];//這里如果就這樣的話會可能產(chǎn)生相同的字母,不符合要求,代碼需要修正,采用標(biāo)記的方法來修正

小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零,五五四,六零七 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
/*
* 給array中每個元素標(biāo)記false,當(dāng)取到了某個字母時候,對其進行標(biāo)記true不再訪問
* 這里要使用到循環(huán),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;
}
/*
* 比較兩個數(shù)組,采用數(shù)組來獲得結(jié)果
* 比較獲得的結(jié)果有兩個
* 一個是字母相同數(shù)
* 一個是位置相同數(shù)
* 所以采用一個長度為2的數(shù)組來存儲
* */
public static int[] check(char[] chs,char[] input){//看到不是viod就必須有返回
int[] result = new int[2];//默認值result[0]=0,result[1]=0
//result[0]存儲位置相同的個數(shù)result[1]存儲字母相同的個數(shù)
//兩個數(shù)組的每個元素都要比較,從chs的第一個開始逐一跟input的每一個比較,for循環(huán)嵌套
for(int i=0;i
for(int j=0;j
//開始比較
if(chs[i]==input[j]){//找到相同字母,跳出最里面的循環(huán)
result[1]++;
if(i==j){//位置相同
result[0]++;
}
break;
}
}
}
return result;
}
}
程序運行結(jié)果演示
程序運行結(jié)果演示
程序運行結(jié)果演示
小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零,五五四,六零七 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
程序運行結(jié)果演示程序運行結(jié)果演示



