<small>
猜字母游戲
為猜字母游戲添加游戲等級(jí)。游戲等級(jí)設(shè)為三等:5屈雄、7和9村视,代表所需要猜測(cè)的字母?jìng)€(gè)數(shù)。游戲開始時(shí)酒奶,由玩家選擇游戲等級(jí)(5蚁孔,7奶赔,9)。如果選擇7杠氢,則會(huì)隨機(jī)產(chǎn)生7個(gè)字符站刑,然后玩家輸入一個(gè)字符串包含7個(gè)字符,看這7個(gè)字符和隨機(jī)產(chǎn)生的7個(gè)字符比較鼻百,看是否正確绞旅,并統(tǒng)計(jì)分?jǐn)?shù)。另外温艇,如果輸入其它因悲,重新提示輸入游戲等級(jí)。系統(tǒng)交互情況如圖所示:
圖
package homework;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class GussLetters {
/**為猜字母游戲添加游戲等級(jí)勺爱。
* 游戲等級(jí)設(shè)為三等:5晃琳、7和9,
* 代表所需要猜測(cè)的字母?jìng)€(gè)數(shù)琐鲁。游戲開始時(shí)卫旱,
* 由玩家選擇游戲等級(jí)(5,7绣否,9)誊涯。
* 如 果選擇7,則會(huì)隨機(jī)產(chǎn)生7個(gè)字符蒜撮,
* 然后玩家輸入一個(gè)字符串包含7個(gè)字符暴构,
* 看這7個(gè)字符和隨機(jī)產(chǎn)生的7個(gè)字符比較,
* 看是否正確段磨,并統(tǒng)計(jì)分?jǐn)?shù)取逾。另外,如果輸入 其它苹支,
* 重新提示輸入游戲等級(jí)砾隅。
* @param args
*/
public static void main(String[] args) {
System.out.println("GussingGame>>歡迎嘗試猜字母游戲!");
Scanner sc = new Scanner(System.in);
//輸入游戲等級(jí)
int level = getLevel(sc);
//隨機(jī)產(chǎn)生level個(gè)字符
char[] randomChars = getRandomChars(level);
//游戲開始
gameStart(sc, level, randomChars);
}
/**
* 猜字母游戲
* 控制臺(tái)輸入對(duì)應(yīng)級(jí)別的字符序列
* 與隨機(jī)產(chǎn)生的字符序列進(jìn)行對(duì)比债蜜。
* 并將最后的對(duì)比結(jié)果進(jìn)行打印晴埂。
* @param sc 控制臺(tái)掃描器,用于進(jìn)行控制臺(tái)猜字母掃描
* @param level 對(duì)應(yīng)的游戲級(jí)別
* @param randomChars 隨機(jī)產(chǎn)生的字符序列數(shù)組
*/
private static void gameStart(Scanner sc, int level, char[] randomChars) {
//游戲開始
//控制臺(tái)輸入所要猜的字母序列 start
char[] gusseingChars = new char[level];
//記錄總次數(shù)
int totalGusseCount = 0;
System.out.println("GussingGame>>游戲開始寻定,請(qǐng)輸入您所猜的"+level+"個(gè)字母的序列:(exit-退出)");
while(true){
//輸入字符串
String gusseingStr = sc.next();
//輸入的是exit儒洛,則退出游戲
if("exit".equals(gusseingStr)){
break;
}
//如果輸入的字符串長(zhǎng)度不等于level,輸入無效狼速,重新輸入琅锻。
if(gusseingStr.length() != level){
System.out.println("GussingGame>>您的輸入字符個(gè)數(shù)有誤,請(qǐng)重新輸入:(exit-退出)");
continue;
}
//將字符串轉(zhuǎn)成大寫,再轉(zhuǎn)換換成字符數(shù)組
gusseingChars =
gusseingStr.toUpperCase().toCharArray();
//隨機(jī)字符數(shù)組恼蓬、人工猜測(cè)字符數(shù)組對(duì)比
int[] rights =
checkChars(randomChars,gusseingChars);
//結(jié)果打泳辍: //猜一次 加一次。
System.out.println("GussingGame>>您猜對(duì)了"+rights[0]+"個(gè)字符处硬,其中"+rights[1]+"個(gè)字符的位置正確P』薄(總次數(shù)是"+(++totalGusseCount)+",exit-退出)");
//都猜對(duì)了,自動(dòng)結(jié)束
if(rights[1] == level){
break;
}
}
//控制臺(tái)輸入所要猜的字母序列 end
}
/**
* 產(chǎn)生隨機(jī)字符序列
* @param level 游戲級(jí)別
* @return 隨機(jī)字符序列數(shù)組
*/
private static char[] getRandomChars(int level) {
//隨機(jī)產(chǎn)生level個(gè)字符 start
//隨機(jī)字符數(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];
//隨機(jī)數(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)對(duì)應(yīng)的字母是否已被取出
if(randomIndexs[index]){
//已經(jīng)取出郁油,本次隨機(jī)無效本股,繼續(xù)本次隨機(jī)。
i--;
continue;
}
//本次隨機(jī)有效桐腌,取出子字母拄显,并將對(duì)應(yīng)開關(guān)開啟。
randomChars[i] = chars[index];
randomIndexs[index] = true;
}
System.out.println(Arrays.toString(randomChars));
//隨機(jī)產(chǎn)生level個(gè)字符 end
return randomChars;
}
/**
* 獲得游戲級(jí)別
* @param sc 控制臺(tái)掃描器案站,掃描輸入的游戲級(jí)別
* @return 游戲級(jí)別
*/
private static int getLevel(Scanner sc) {
int level = 0;
//輸入游戲級(jí)別
while(true){
System.out.print("GussingGame>>請(qǐng)輸入游戲級(jí)別(5躬审、7、9)蟆盐?");
level = sc.nextInt();
//如果輸入的是5承边、7、9石挂,則退出循環(huán)博助。
if(level==5 || level==7 || level==9){
break;
}
}
return level;
}
/**
* 隨機(jī)字符序列數(shù)組、控制臺(tái)人工猜測(cè)字符序列數(shù)組
* 對(duì)比方法
* @param randomChars 隨機(jī)字符序列數(shù)組
* @param gusseingChars 控制臺(tái)人工猜測(cè)字符序列數(shù)組
* @return new int[]{猜對(duì)字符的個(gè)數(shù)痹愚,猜對(duì)字符的位置個(gè)數(shù)}
*/
private static int[] checkChars(char[] randomChars, char[] gusseingChars){
//隨機(jī)數(shù)組富岳、人工輸入數(shù)組進(jìn)行對(duì)比 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]){
//猜對(duì)字母
rightNumber ++;
if(i == j){
//猜對(duì)位置
rightIndex ++;
}
}
}
}
//隨機(jī)數(shù)組、人工輸入數(shù)組進(jìn)行對(duì)比 end
return new int[]{rightNumber,rightIndex};
}
}
質(zhì)數(shù)判斷輸出
輸入一個(gè)數(shù)拯腮,輸出小于這個(gè)數(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("請(qǐng)輸入查找質(zhì)數(shù)的范圍2~");
//獲取質(zhì)數(shù)范圍2~num
Scanner scan=new Scanner(System.in);
int num=scan.nextInt();
int count=0;//質(zhì)數(shù)的計(jì)數(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+"個(gè)質(zhì)數(shù)");
}
}
冒牌排序
package com.ksxx.corejava.day07.pm;
import java.util.Arrays;
/**
* 冒泡算法:
* 兩兩比較窖式,大的后移。
* 每一輪冒出一個(gè)最大數(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+"個(gè)數(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));
}
}