<small>
猜字母游戲
為猜字母游戲添加游戲等級。游戲等級設(shè)為三等:5、7和9,代表所需要猜測的字母個數(shù)。游戲開始時,由玩家選擇游戲等級(5,7,9)。如果選擇7,則會隨機產(chǎn)生7個字符,然后玩家輸入一個字符串包含7個字符,看這7個字符和隨機產(chǎn)生的7個字符比較,看是否正確,并統(tǒng)計分?jǐn)?shù)。另外,如果輸入其它,重新提示輸入游戲等級。系統(tǒng)交互情況如圖所示:

圖
package homework;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class GussLetters {
/**為猜字母游戲添加游戲等級。
* 游戲等級設(shè)為三等:5、7和9,
* 代表所需要猜測的字母個數(shù)。游戲開始時,
* 由玩家選擇游戲等級(5,7,9)。
* 如 果選擇7,則會隨機產(chǎn)生7個字符,
* 然后玩家輸入一個字符串包含7個字符,
* 看這7個字符和隨機產(chǎn)生的7個字符比較,
* 看是否正確,并統(tǒng)計分?jǐn)?shù)。另外,如果輸入 其它,
* 重新提示輸入游戲等級。
* @param args
*/
public static void main(String[] args) {
System.out.println("GussingGame>>歡迎嘗試猜字母游戲!");
Scanner sc = new Scanner(System.in);
//輸入游戲等級
int level = getLevel(sc);
//隨機產(chǎn)生level個字符
char[] randomChars = getRandomChars(level);
//游戲開始
gameStart(sc, level, randomChars);
}
/**
* 猜字母游戲
* 控制臺輸入對應(yīng)級別的字符序列
* 與隨機產(chǎn)生的字符序列進行對比。
* 并將最后的對比結(jié)果進行打印。
* @param sc 控制臺掃描器,用于進行控制臺猜字母掃描
* @param level 對應(yīng)的游戲級別
* @param randomChars 隨機產(chǎn)生的字符序列數(shù)組
*/
private static void gameStart(Scanner sc, int level, char[] randomChars) {
//游戲開始
//控制臺輸入所要猜的字母序列 start
char[] gusseingChars = new char[level];
//記錄總次數(shù)
int totalGusseCount = 0;
System.out.println("GussingGame>>游戲開始,請輸入您所猜的"+level+"個字母的序列:(exit-退出)");
while(true){
//輸入字符串
String gusseingStr = sc.next();
//輸入的是exit,則退出游戲
if("exit".equals(gusseingStr)){
break;
}
//如果輸入的字符串長度不等于level,輸入無效,重新輸入。
if(gusseingStr.length() != level){
System.out.println("GussingGame>>您的輸入字符個數(shù)有誤,請重新輸入:(exit-退出)");
continue;
}
//將字符串轉(zhuǎn)成大寫,再轉(zhuǎn)換換成字符數(shù)組
gusseingChars =
gusseingStr.toUpperCase().toCharArray();
//隨機字符數(shù)組、人工猜測字符數(shù)組對比
int[] rights =
checkChars(randomChars,gusseingChars);
//結(jié)果打?。? //猜一次 加一次。
System.out.println("GussingGame>>您猜對了"+rights[0]+"個字符,其中"+rights[1]+"個字符的位置正確!(總次數(shù)是"+(++totalGusseCount)+",exit-退出)");
//都猜對了,自動結(jié)束
if(rights[1] == level){
break;
}
}
//控制臺輸入所要猜的字母序列 end
}
/**
* 產(chǎn)生隨機字符序列
* @param level 游戲級別
* @return 隨機字符序列數(shù)組
*/
private static char[] getRandomChars(int level) {
//隨機產(chǎn)生level個字符 start
//隨機字符數(shù)組
char[] randomChars = new char[level];
char[] chars = {'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[] randomIndexs = new boolean[chars.length];
//隨機數(shù)
Random ran = new Random();
for(int i=0; i<randomChars.length; i++){
int index = ran.nextInt(26);//[0,26)即[0,25]其中的整數(shù)
//判斷該下標(biāo)對應(yīng)的字母是否已被取出
if(randomIndexs[index]){
//已經(jīng)取出,本次隨機無效,繼續(xù)本次隨機。
i--;
continue;
}
//本次隨機有效,取出子字母,并將對應(yīng)開關(guān)開啟。
randomChars[i] = chars[index];
randomIndexs[index] = true;
}
System.out.println(Arrays.toString(randomChars));
//隨機產(chǎn)生level個字符 end
return randomChars;
}
/**
* 獲得游戲級別
* @param sc 控制臺掃描器,掃描輸入的游戲級別
* @return 游戲級別
*/
private static int getLevel(Scanner sc) {
int level = 0;
//輸入游戲級別
while(true){
System.out.print("GussingGame>>請輸入游戲級別(5、7、9)?");
level = sc.nextInt();
//如果輸入的是5、7、9,則退出循環(huán)。
if(level==5 || level==7 || level==9){
break;
}
}
return level;
}
/**
* 隨機字符序列數(shù)組、控制臺人工猜測字符序列數(shù)組
* 對比方法
* @param randomChars 隨機字符序列數(shù)組
* @param gusseingChars 控制臺人工猜測字符序列數(shù)組
* @return new int[]{猜對字符的個數(shù),猜對字符的位置個數(shù)}
*/
private static int[] checkChars(char[] randomChars, char[] gusseingChars){
//隨機數(shù)組、人工輸入數(shù)組進行對比 start
int rightNumber = 0;
int rightIndex = 0;
for(int i=0; i<randomChars.length; i++){//控制輪數(shù)
for(int j=0; j<gusseingChars.length; j++){//控制每輪次數(shù)
if(randomChars[i] == gusseingChars[j]){
//猜對字母
rightNumber ++;
if(i == j){
//猜對位置
rightIndex ++;
}
}
}
}
//隨機數(shù)組、人工輸入數(shù)組進行對比 end
return new int[]{rightNumber,rightIndex};
}
}
質(zhì)數(shù)判斷輸出
輸入一個數(shù),輸出小于這個數(shù)的所有質(zhì)數(shù)
package com.ksxx.corejava.day04.pm;
import java.util.Scanner;
public class LianXi10 {
/**
* 質(zhì)數(shù)
* @param args
*/
public static void main(String[] args) {
System.out.println("請輸入查找質(zhì)數(shù)的范圍2~");
//獲取質(zhì)數(shù)范圍2~num
Scanner scan=new Scanner(System.in);
int num=scan.nextInt();
int count=0;//質(zhì)數(shù)的計數(shù)
//循環(huán)判斷質(zhì)數(shù)開始
for(int i=2;i<=num;i++){
boolean flag=true;
for(int j=2;j<=Math.sqrt(i);j++){
if(i%j==0){
flag=false;
break;
}
}
//判斷質(zhì)數(shù)結(jié)束
if(flag){
count++;
System.out.print(i+" ");
if(count%10==0){
System.out.println();
}
}
}
System.out.println("\n共有"+count+"個質(zhì)數(shù)");
}
}
冒牌排序
package com.ksxx.corejava.day07.pm;
import java.util.Arrays;
/**
* 冒泡算法:
* 兩兩比較,大的后移。
* 每一輪冒出一個最大數(shù),直到排序結(jié)束。
* @author chengcheng
*
*/
public class Demo01 {
public static void main(String[] args) {
int[] nums = {1,2,3,4,6,5};
System.out.println("原數(shù)組:"+Arrays.toString(nums));
System.out.println("***********************start");
for( int i=0; i<nums.length-1 ; i++){//外層循環(huán)控制行(輪數(shù))
System.out.println(nums.length+"個數(shù),第"+(i+1)+"輪:");
for( int j=0; j<nums.length-i-1 ; j++){//內(nèi)存循環(huán)控制列(每輪次數(shù))
//兩兩比較,大的后移
if(nums[j]<nums[j+1]){
int temp = nums[j+1];
nums[j+1] = nums[j];
nums[j] = temp;
}
System.out.println('\t'+"第"+(j+1)+"次結(jié)果:"+Arrays.toString(nums));
}
}
System.out.println("***********************end");
System.out.println("經(jīng)過冒泡算法排序后數(shù)組:"+Arrays.toString(nums));
}
}