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