一、本章任務
完成青鳥迷你游戲平台的開發
二、目標
會定義變量
會使用數據類型和運算符
會使用選擇結構
會使用循環結構
三、內容
1 上機練習一
需求:
用戶進入游戲平台后,可以選擇遠的游戲,程序運行結果如下

思路
獲得用戶的輸入:Scan
輸出:System.out.println()
選擇結構:if 、switch
實現
第一種方法
public class SelectGame{
public static void main(String[] args) {
System.out.println("歡迎進入青鳥游迷你戲平台\n");
System.out.println("請選擇您喜愛的游戲:\n");
System.out.println("*******************************");
System.out.println("\t1.斗地主");
System.out.println("\t2.斗牛");
System.out.println("\t3.泡泡龍");
System.out.println("\t4.連連看");
System.out.println("*******************************\n");
int choice; //用戶選擇
boolean isRight; //輸入是否正確
System.out.print("請選擇,輸入數字:");
Scanner input = new Scanner(System.in);
do{
isRight = true;
choice = input.nextInt();
switch (choice) {
case 1:
System.out.println("您已進入斗地主房間!");
break;
case 2:
System.out.println("您已進入斗牛房間!");
break;
case 3:
System.out.println("您已進入泡泡龍房間!");
break;
case 4:
System.out.println("您已進入連連看房間!");
break;
default:
System.out.print("輸入錯誤,請重新輸入數字:");
isRight = false;
break;
}
}while(!isRight);
}
}
第二種方法
public class SelectGame2 {
public static void main(String[] args) {
System.out.println("歡迎進入青鳥游迷你戲平台\n");
System.out.println("請選擇您喜愛的游戲\n");
System.out.println("*******************************");
System.out.println("1.斗地主");
System.out.println("2.斗牛");
System.out.println("3.泡泡龍");
System.out.println("4.連連看");
System.out.println("*******************************\n");
System.out.print("請選擇,輸入數字:");
Scanner input = new Scanner(System.in);
int selectInt = input.nextInt();
while (selectInt>=5||selectInt<=0) {
System.out.print("選擇錯誤,請重新選擇");
selectInt = input.nextInt();
}
switch (selectInt) {
case 1:
System.out.println("你已進入斗地主房間!");
break;
case 2:
System.out.println("你已進入斗牛房間!");
break;
case 3:
System.out.println("你已進入泡泡龍房間!");
break;
case 4:
System.out.println("你已進入連連看房間!");
break;
}
}
}
2 上機練習二:玩游戲並晉級
需求
用戶玩游戲,每次玩5局
不足5局則不能晉級。
在5局游戲中,如果80%達到80分以上,為一級,如果60%達到80分以上為二級,否則不能晉級

思路
使用循環實現玩5局游戲,使用break語句實現中途退出游戲
使用多重if,根據游戲得分判斷是否晉級
實現
public class RiseGame {
public static void main(String[] args) {
System.out.println("青鳥迷你游戲平台>游戲晉級\n");
Scanner input = new Scanner(System.in);
int n = 1;
int count=0;
while (n<=5) {
System.out.print("您正在玩第"+n+"局,成績為:");
int scroe = input.nextInt();
if(scroe>80){
count++;
}
if(n!=5){
System.out.println("繼續玩下一局嗎?(yes/no)");
String answer = input.next();
if(answer.equals("no")){
System.out.println("你已經退出游戲");
break;
}
System.out.println("你進入一下局");
}
n++;
}
System.out.println("n的值:"+n);
if(n>5){
if(n>=4){
System.out.println("\n恭喜,通過一級!");
}else if(n>=3&&n<4){
System.out.println("\n恭喜,通過二級!");
}else {
System.out.println("\n對不起,你未能晉級!");
}
}
}
}
3 上機練習三:玩游戲並支付游戲幣
需求:
根據游戲類型和游戲時長計算應支付的游戲幣
游戲類型分為兩大類:牌類和休閑競技類
游戲的收費標准
牌類:10元/小時
休閑競技類:20元/小時
游戲的收費規則:游戲時間超過10小時,可以打5折10小時及以下,打8折

實現
public class PayGame {
public static void main(String[] args) {
System.out.println("青鳥迷你游戲平台 > 游戲幣支付\n");
System.out.println("請選擇您玩的游戲類型:");
System.out.println("\t1.牌類");
System.out.println("\t2.休閑競技類");
Scanner input = new Scanner(System.in);
int choice = input.nextInt();
System.out.println("請您輸入游戲時長:");
int time = input.nextInt(); //游戲時間
int qm = 0; //游戲幣
switch (choice) {
case 1:
if (time > 10) {
System.out.println("您玩的是牌類游戲,時長是:" + time + "小時,可以享受5折優惠");
qm = (int) (10 * time * 0.5);
System.out.println("您需要支付" + qm + "個游戲幣");
} else {
System.out.println("您玩的是牌類游戲,時長是:" + time + "小時,可以享受8折優惠");
qm = (int) (10 * time * 0.8);
System.out.println("您需要支付" + qm + "個游戲幣");
}
break;
case 2:
if (time > 10) {
System.out.println("您玩的是休閑競技類游戲,時長是:" + time + "小時,可以享受5折優惠");
qm = (int) (20 * time * 0.5);
System.out.println("您需要支付" + qm + "個游戲幣");
} else {
System.out.println("您玩的是休閑競技類游戲,時長是:" + time + "小時,可以享受8折優惠");
qm = (int) (20 * time * 0.8);
System.out.println("您需要支付" + qm + "個游戲幣");
}
break;
default:
System.out.print("無效選擇");
}
}
}
4 上機練習四:統計游戲點擊率
需求
錄入游戲的點擊率,統計點擊率超過100的游戲所占的比例

思路:
使用if結構、continue語句統計點擊率100以上的游戲數量
實現
public class GameDot {
public static void main(String[] args) {
int score; // 點擊率
int total; // 游戲總數量
int num = 0; //點擊率大於100的游戲數量
Scanner input = new Scanner(System.in);
System.out.println("青鳥迷你游戲平台 > 游戲點擊率\n");
for (int i = 0; i < 4; i++) {
System.out.print("請輸入第" + (i + 1) + "個游戲的點擊率: ");
score = input.nextInt();
if (score <= 100) {
continue;
}
num++;
}
System.out.println("點擊率大於100的游戲數是: " + num);
double rate = (double)num / 4 * 100;
System.out.println("點擊率大於100的游戲所占的比例為:" + rate + "%");
}
}
4 上機練習五:添加用戶信息
需求
為了維護用戶信息,需要將其信息錄入系統
用戶的信息包括:用戶編號、年齡、積分
要求年齡10歲以上
若年齡合法,則顯示錄入的信息,否則顯示錄入失敗
實現
public class AddUser {
public static void main(String[] args) {
System.out.println("青鳥迷你游戲平台 > 添加用戶信息\n");
int custNo = 0; //用戶編號
int age; //年齡
int points = 0; //積分
System.out.println("請輸入要錄入用戶的數量:");
Scanner input = new Scanner(System.in);
int count=input.nextInt();
//循環錄入用戶信息
for(int i=0;i<count;i++){
System.out.print("請輸入用戶編號(<4位整數>):");
custNo = input.nextInt();
System.out.print("請輸入用戶年齡:");
age = input.nextInt();
if(age<10 || age>100){ //年齡不合適則跳出
System.out.println("很抱歉,您的年齡不適宜玩游戲");
System.out.println("錄入信息失敗\n");
continue;
}
System.out.print("請輸入會員積分:");
points = input.nextInt();
System.out.println("您錄入的會員信息是:");
System.out.println("用戶編號:"+custNo+ "\t年齡:" +age+ "\t積分:" +points+ "\n");
}
}
}
四、本章總結
分支結構、循環結構、跳轉語句的綜合運用
五、作業
1 編寫JAVA程序,實現接收用戶輸入的正整數,輸出該數的階乘
要求:限制輸入的數據在1-10之間,無效數據進行提示,結束程序
輸出結果如:4!=1*2*3*4=24
實現
public class FactDemo {
/**
* @param args
*/
public static void main(String[] args) {
//定義變量接收用戶輸入,計算階乘,累計表達式
int number,fact=1;
String msg="";
Scanner input=new Scanner(System.in);
//提醒輸入
System.out.println("請輸入一個10以內的正整數:");
number=input.nextInt();
//驗證有效性
if(number>10 || number<1){
System.out.println("數據無效");
return;
}
System.out.print(number+"!=");
//計算階乘
for(int i=1;i<number;i++){
msg+=i+"*";
fact*=i;
}
//組合結果,並顯示
fact*=number;
msg+=number+"="+fact;
System.out.println(msg);
}
}
2 寫JAVA程序,實現輸出1--100之間所有不能被7整除的數,並求和
-
要求:每輸出4個數據換行顯示
實現
public class NumDemo {
/**
* @param args
*/
public static void main(String[] args) {
//定義變量,累計求和,統計個數
int sum=0,count=1;
System.out.println("1-100之間不能被7整除的數據為:");
for(int i=1;i<=100;i++){
//判斷是否能被7整除,如果能被7整除,結束本次循環
if(i%7==0)
continue;
//輸出不能被7整除的數據
System.out.print(i+"\t");
//每4個數換行顯示
if(count%4==0)
System.out.println();
//累計求和,個數增加
sum+=i;
count++;
}
System.out.println();
//輸出累計和
System.out.println("數據之和為:"+sum);
}
}
