分支結(jié)構(gòu)
分支結(jié)構(gòu)(選擇結(jié)構(gòu)) - switch 開(kāi)關(guān)
case 不加 break 就會(huì)一直往下執(zhí)行囚霸,default 不用(因?yàn)槭亲詈笠粋€(gè))
x可以用整數(shù)、字符激才、枚舉邮辽、字符串,只能做等值判斷
switch (x)
例子
- 1. 輸入1-12的數(shù)字代表月份 輸出對(duì)應(yīng)的英文單詞
Scanner input = new Scanner(System.in);
System.out.print("請(qǐng)輸入月份: ");
int month = input.nextInt();
String wordOfMonth;
// switch - 開(kāi)關(guān)
// case 不加 break 就會(huì)一直往下執(zhí)行贸营,default 不用(因?yàn)槭亲詈笠粋€(gè))
// 整數(shù)吨述、字符、枚舉钞脂、字符串 只能做等值判斷
switch (month) {
case 1: wordOfMonth = "January"; break;
case 2: wordOfMonth = "February"; break;
case 3: wordOfMonth = "March"; break;
case 4: wordOfMonth = "April"; break;
case 5: wordOfMonth = "May"; break;
case 6: wordOfMonth = "June"; break;
case 7: wordOfMonth = "July"; break;
case 8: wordOfMonth = "August"; break;
case 9: wordOfMonth = "September"; break;
case 10: wordOfMonth = "October"; break;
case 11: wordOfMonth = "November"; break;
case 12: wordOfMonth = "December"; break;
default: wordOfMonth = "輸出錯(cuò)誤";
}
System.out.println(wordOfMonth);
input.close();
- 2. 自動(dòng)問(wèn)答機(jī)器人
Scanner input = new Scanner(System.in);
System.out.print("請(qǐng)輸入: ");
String yourQuestion = input.nextLine();
String answer;
switch (yourQuestion) {
case "你好":
answer = "你好啊";
break;
case "今天天氣怎么樣":
answer = "你自己去看天氣預(yù)報(bào)";
break;
case "操你大爺":
case "滾蛋":
answer = "請(qǐng)文明用語(yǔ)";
break;
default:
answer = "聽(tīng)不懂";
break;
}
System.out.println("計(jì)算機(jī)說(shuō): " + answer);
input.close();
練習(xí)
- 1.搖骰子決定懲罰方式
//random() - [0,1)
int face = (int) (Math.random() * 6 + 1);
System.out.println("搖出了 " + face + "點(diǎn)" );
String punishment = "";
switch (face) {
case 1:
punishment = "喝酒";
break;
case 2:
punishment = "唱歌";
break;
case 3:
punishment = "真心話";
break;
case 4:
punishment = "大冒險(xiǎn)";
break;
case 5:
punishment = "脫衣服";
break;
case 6:
punishment = "給錢";
break;
/*
* 方法二:
* String punishment;
default:
punishment = "給錢";
break;
*/
}
System.out.println("你的懲罰是: " + punishment);
循環(huán)結(jié)構(gòu)
while 循環(huán)
int i = 1;
while (i <= 10) {
System.out.println(i + ". Hello World!");
i += 1;
}
System.out.println("循環(huán)結(jié)束揣云!");
do-while 循環(huán)
int i = 0;
do {
System.out.println(i + ". Hello World!");
i += 1;
} while (i < 10);
for 循環(huán) ①; ②;③
①: 初始條件,只在第一次進(jìn)循環(huán)執(zhí)行一次冰啃,以后不會(huì)執(zhí)行
②: 循環(huán)條件
③: 循環(huán)體最后一條語(yǔ)句邓夕,每循環(huán)一次執(zhí)行一次
for (int i = 1; i <= 10; i++) {
System.out.println(i + ". Hello World!");
}
System.out.println("循環(huán)結(jié)束!");
例子
- 1.1-100求和
/* int sum = 0;
int i = 1;
while (i <= 100) {
if (i % 5 == 0 || i % 3 == 0 || i % 7 == 0) {
sum += i;
}
i += 1;
}*/
// while () ;
// while 管后面的 空語(yǔ)句 ;
/* int sum = 0;
int i = 1;
do {
sum += i;
i += 1;
} while (i<=100);
*/
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println(sum);
練習(xí)
- 1.計(jì)算機(jī)出一個(gè)1~100隨機(jī)數(shù)阎毅,猜計(jì)算機(jī)出的數(shù)是什么焚刚,猜大 提示 猜大了。扇调。矿咕。。猜對(duì)了 提示 猜對(duì)了,猜錯(cuò) 7次 提示 智商捉急
int answer = (int) (Math.random() * 100 + 1);
int i = 0;
Scanner input = new Scanner(System.in);
while (true) {
System.out.print("猜下數(shù)字是多少: ");
int num = input.nextInt();
i += 1;
/* if (i == 7) {
System.out.println("你智商真捉急!");
}*/
if (num < answer) {
System.out.println("猜小了!");
}
else if (num > answer) {
System.out.println("猜大了!");
}
else {
System.out.println("猜對(duì)了!");
if (i <= 3) {
System.out.println("你真厲害!");
}
else if (i >= 7){
System.out.println("你智商真捉急!");
}
input.close();
break;
}
}
修正后代碼:
Scanner input = new Scanner(System.in);
int answer = (int) (Math.random() * 100 + 1);
int thyAnswer;
int counter = 0;
do {
counter += 1;
System.out.print("請(qǐng)輸入你猜的數(shù)字: ");
thyAnswer = input.nextInt();
if (thyAnswer > answer) {
System.out.println("小一點(diǎn)!");
}
else if (thyAnswer < answer) {
System.out.println("大一點(diǎn)!");
}
else {
System.out.println("恭喜你答對(duì)了! 你總共猜了" + counter + "次.");
}
} while (thyAnswer != answer);
if (counter > 7) {
System.out.println("智商捉急!!!");
}
input.close();
- 2.n! = n * (n - 1) * (n - 2) ··· 3 * 2 * 1
/* Scanner input =new Scanner(System.in);
System.out.print("請(qǐng)輸入一個(gè)正整數(shù): ");
int num = input.nextInt();
int result = 1;
for (int i = num; i >= 1; i--) {
result *= i;
}
System.out.println(num + "! = " + result);
input.close();*/
Scanner input = new Scanner(System.in);
System.out.print("n = ");
int n = input.nextInt();
if (n >= 0) {
double result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
System.out.println(n + "! = " + result);
}
else {
System.err.println("輸入錯(cuò)誤碳柱!");
}
input.close();
作業(yè)
- 1.把一顆骰子 搖6W次捡絮,統(tǒng)計(jì)每一面出現(xiàn)的次數(shù)
int face = 0;
int oneSum = 0;
int twoSum = 0;
int threeSum = 0;
int fourSum = 0;
int fiveSum = 0;
int sixSum = 0;
for (int i = 0; i < 60000; i++) {
face = (int) (Math.random() * 6 + 1);
switch (face) {
case 1:
oneSum += 1;
break;
case 2:
twoSum += 1;
break;
case 3:
threeSum += 1;
break;
case 4:
fourSum += 1;
break;
case 5:
fiveSum += 1;
break;
case 6:
sixSum += 1;
break;
}
}
System.out.printf("1 出現(xiàn)的次數(shù): %d,\n2 出現(xiàn)的次數(shù): %d,\n3 出現(xiàn)的次數(shù): %d,\n"
+ "4 出現(xiàn)的次數(shù): %d,\n5 出現(xiàn)的次數(shù): %d,\n6 出現(xiàn)的次數(shù): %d",oneSum,twoSum,threeSum,
fourSum,fiveSum,sixSum);
修正后代碼:
int f1 = 0, f2 = 0, f3 = 0, f4 = 0, f5 = 0, f6 = 0;
// f1 = f2 = f3 = f4 = f5 = f6 = 0;
for (int i = 0; i < 60000; i++) {
int face = (int) (Math.random() * 6 + 1);
switch (face) {
case 1: f1 += 1; break;
case 2: f2 += 1; break;
case 3: f3 += 1; break;
case 4: f4 += 1; break;
case 5: f5 += 1; break;
case 6: f6 += 1; break;
}
}
System.out.println("1點(diǎn)搖出了 " + f1 + " 次");
System.out.println("2點(diǎn)搖出了 " + f2 + " 次");
System.out.println("3點(diǎn)搖出了 " + f3 + " 次");
System.out.println("4點(diǎn)搖出了 " + f4 + " 次");
System.out.println("5點(diǎn)搖出了 " + f5 + " 次");
System.out.println("6點(diǎn)搖出了 " + f6 + " 次");
- 2.找出100 ~ 999之間水仙花數(shù) 153 = 13+53+3^3
int bit = 0;
int ten = 0;
int hundreds = 0;
int sum;
for (int i = 100; i <= 999; i++) {
bit = i % 10;
ten = i / 10 % 10;
hundreds = i / 100 ;
sum = bit * bit * bit + ten * ten * ten + hundreds * hundreds * hundreds;
if (i == sum) {
System.out.println(i);
}
}
修正后代碼:
for (int i = 100; i < 999; i++) {
int bw = i / 100;
int sw = i / 10 % 10;
int gw = i % 10;
if (i == bw * bw * bw + sw * sw * sw + gw * gw * gw) {
System.out.println(i);
}
}
- 3.輸入兩個(gè)正整數(shù) 求最大公約數(shù)和最小公倍數(shù)
Scanner input = new Scanner(System.in);
System.out.print("輸入兩個(gè)正整數(shù): ");
int a = input.nextInt();
int b = input.nextInt();
int min = a < b ? a : b;
int max = a > b ? a : b;
int greatestCommonDivisor = 0;
int leastCommonMultiple = 0;
for (int i = min; i >= 1; i--) {
if (a % i == 0 && b % i == 0) {
greatestCommonDivisor = i;
break;
}
}
for (int i = max; i < a * b; i++) {
if (i % a == 0 && i % b == 0) {
leastCommonMultiple = i;
break;
}
}
System.out.println(a + "和" + b + "的最大公約數(shù)是:" +
greatestCommonDivisor + " ,最大公倍數(shù)是: " + leastCommonMultiple);
input.close();
修正后代碼:
Scanner input = new Scanner(System.in);
System.out.print("請(qǐng)輸入兩個(gè)數(shù): ");
int x = input.nextInt();
int y = input.nextInt();
for (int i = x < y ? x : y; i >= 1; i--) {
if (x % i == 0 && y % i == 0) {
System.out.println("最大公約數(shù): " + i);
System.out.println("最小公倍數(shù): " + x * y / i);
break; // 提前結(jié)束循環(huán)
}
}
input.close();
晚作業(yè)
- **1.Craps賭博游戲 - **
**兩顆色子 - **
**第一次: **
玩家搖出 7 和11 玩家勝
2 3 或12 莊家勝
其他點(diǎn)數(shù) 游戲繼續(xù)
玩家再搖
如果搖出7點(diǎn) 莊家勝
如果搖出了第一次的點(diǎn)數(shù) 玩家勝
其他情況 游戲繼續(xù)
首次編寫(xiě):
int dealerMoney = 1000;
int playerMoney = 1000;
int face1 = (int) (Math.random() * 6 + 1);
int face2 = (int) (Math.random() * 6 + 1);
int count = face1 + face2;
int time = 1;
boolean victory = true;
do {
System.out.printf("游戲開(kāi)始: \n莊家的金錢 : %d 元,玩家的金錢 : %d 元\n",
dealerMoney,playerMoney);
System.out.println("第"+ time +"次搖出" + count +"點(diǎn)");
if (count == 7 || count == 11) {
victory = false;
System.out.println("玩家獲勝!");
}
else if(count == 2 || count == 3 || count == 12) {
victory =false;
System.out.println("莊家獲勝!");
}
else {
do {
face1 = (int) (Math.random() * 6 + 1);
face2 = (int) (Math.random() * 6 + 1);
int count2 = face1 + face2;
time += 1;
System.out.println("第"+ time +"次搖出" + count2 +"點(diǎn)");
if (count2 == 7) {
victory = false;
System.out.println("莊家獲勝!");
}
else if (count2 == count) {
victory = false;
System.out.println("玩家獲勝!");
}
} while (victory);
}
} while (victory);
第一次修改代碼:
int dealerMoney = 1000;
int playerMoney = 1000;
boolean over = true;
System.out.printf("游戲開(kāi)始: \n莊家的金錢 : %d 元,玩家的金錢 : %d 元\n",
dealerMoney,playerMoney);
do {
int face1 = (int) (Math.random() * 6 + 1);
int face2 = (int) (Math.random() * 6 + 1);
int count = face1 + face2;
int time = 1;
System.out.println("第"+ time +"次搖出" + count +"點(diǎn)");
if (count == 7 || count == 11) {
System.out.println("玩家獲勝!");
playerMoney += 100;
dealerMoney -= 100;
}
else if(count == 2 || count == 3 || count == 12) {
System.out.println("莊家獲勝!");
playerMoney -= 100;
dealerMoney += 100;
}
else {
boolean victory = true;
do {
face1 = (int) (Math.random() * 6 + 1);
face2 = (int) (Math.random() * 6 + 1);
int count2 = face1 + face2;
time += 1;
System.out.println("第"+ time +"次搖出" + count2 +"點(diǎn)");
if (count2 == 7) {
victory = false;
System.out.println("莊家獲勝!");
playerMoney -= 100;
dealerMoney += 100;
}
else if (count2 == count) {
victory = false;
System.out.println("玩家獲勝!");
playerMoney += 100;
dealerMoney -= 100;
}
} while (victory);
}
System.out.printf("\n游戲現(xiàn)在: \n莊家的金錢 : %d 元,玩家的金錢 : %d 元\n",
dealerMoney,playerMoney);
if(dealerMoney == 0 || playerMoney == 0){
over = false;
System.out.println("游戲結(jié)束");
}
} while (over);
第二次修改代碼:
Scanner input = new Scanner(System.in);
int dealerMoney = 1000;
int playerMoney = 1000;
boolean over = true;
System.out.printf("游戲開(kāi)始: \n莊家的金錢 : %d 元,玩家的金錢 : %d 元\n",
dealerMoney,playerMoney);
do {
int money;
do {
System.out.print("請(qǐng)下注: ");
int inMoney = input.nextInt();
if (playerMoney - inMoney > 0 && dealerMoney - inMoney > 0) {
money = inMoney;
}
else {
System.out.println("下注金額超出雙方某一方的剩余金額莲镣!");
money = 0;
}
} while (money == 0);
int face1 = (int) (Math.random() * 6 + 1);
int face2 = (int) (Math.random() * 6 + 1);
int count = face1 + face2;
int time = 1;
System.out.println("第"+ time +"次搖出" + count +"點(diǎn)");
if (count == 7 || count == 11) {
System.out.println("玩家獲勝!");
playerMoney += money;
dealerMoney -= money;
}
else if(count == 2 || count == 3 || count == 12) {
System.out.println("莊家獲勝!");
playerMoney -= money;
dealerMoney += money;
}
else {
boolean victory = true;
do {
face1 = (int) (Math.random() * 6 + 1);
face2 = (int) (Math.random() * 6 + 1);
int count2 = face1 + face2;
time += 1;
System.out.println("第"+ time +"次搖出" + count2 +"點(diǎn)");
if (count2 == 7) {
victory = false;
System.out.println("莊家獲勝!");
playerMoney -= money;
dealerMoney += money;
}
else if (count2 == count) {
victory = false;
System.out.println("玩家獲勝!");
playerMoney += money;
dealerMoney -= money;
}
} while (victory);
}
System.out.printf("\n游戲現(xiàn)在: \n莊家的金錢 : %d 元,玩家的金錢 : %d 元\n",
dealerMoney,playerMoney);
if(dealerMoney == 0 || playerMoney == 0){
over = false;
System.out.println("游戲結(jié)束");
}
} while (over);
input.close();