Java基本文法----流程控制02
- 基礎練習
-
- 1. if-else 練習
- 2. switch 練習
- 3. for 循環
- 4. while 循環
- 5. do ... while 循環
基礎練習
1. if-else 練習
-
賭數遊戲
提供三個1-6的随機數,作為擲骰子得到的點數。如果各個點數相同,則為豹子。
如果三個骰子點數和,小于或等于9,則為“小”。
如果三個骰子點數和,大于9,則為“大”。
使用者随機選擇:押大、押小或者押豹子。通過判斷,輸出客戶是否押正确。
public static void main(String[] args){
while (true){
Random rand = new Random();
// 随機生成的三個數a,b,c
int a = rand.nextInt(6) + 1;
int b = rand.nextInt(6) + 1;
int c = rand.nextInt(6) + 1;
String result;
Scanner sc = new Scanner(System.in);
System.out.println("請下注(大/小/豹子):");
String size = sc.next();
System.out.println("開出的骰子數分别是:"+ a +","+ b +","+ c);
int sum = a + b + c; // 3 <= sum <= 18
if (a == b && b == c){
result = "豹子";
}else if (sum <= 9){
result = "小";
}else {
result = "大";
}
if (size.equals(result)){
System.out.println("恭喜你,猜中了!");
System.out.println("Game Over!");
break;
}else {
System.out.println("很遺憾,沒有猜中,再接再厲");
continue;
}
}
}
- 假設你想開發一個玩彩票的遊戲,程式随機地産生一個兩位數的彩票,提示使用者輸入 一個兩位數,然後按照下面的規則判定使用者是否能赢。
- 如果使用者輸入的數比對彩票的實際順序,獎金10 000美元。
- 如果使用者輸入的所有數字比對彩票的所有數字,但順序不一緻,獎金 3 000美元。
- 如果使用者輸入的一個數字僅滿足順序情況下比對彩票的一個數字,獎金1 000美元。
- 如果使用者輸入的一個數字僅滿足非順序情況下比對彩票的一個數字,獎金500美元。
- 如果使用者輸入的數字沒有比對任何一個數字,則彩票廢棄。
public static void main(String[] args){
/* Math.random() : [0,1) * 90 ->[0,90) + 10 ->[10,100) ->[10,99] */
int lotteryNum = (int)(Math.random() * 90 + 10);
// System.out.println(lotteryNum);
Scanner sc = new Scanner(System.in);
System.out.println("請輸入第一個數:");
int num1 = sc.nextInt();
System.out.println("請輸入第二個數:");
int num2 = sc.nextInt();
if ((num1*10 + num2) == lotteryNum){
System.out.println("獎勵10000美元");
}else if (num1 == lotteryNum%10 && num2 == lotteryNum/10 ){
System.out.println("獎勵3000美元");
}else if (num1 == lotteryNum/10 || num2 == lotteryNum%10){
System.out.println("獎勵1000美元");
}else if (num1 == lotteryNum%10 || num2 == lotteryNum/10){
System.out.println("獎勵500美元");
} else {
System.out.println("很抱歉,你沒有中獎!");
}
System.out.println("開出的彩票号碼為:"+ lotteryNum);
}
- 編寫程式:由鍵盤輸入三個整數分别存入變量num1、num2、num3, 對它們進行排序,并且從小到大輸出。
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入第一個數:");
int num1 = sc.nextInt();
System.out.println("請輸入第二個數:");
int num2 = sc.nextInt();
System.out.println("請輸入第三個數:");
int num3 = sc.nextInt();
int temp = 0;
/*
* 将第一個數跟第二個數進行比較,對他們進行交換位置,将較小的數放在第一位,較大的數放第二位
* 再将第三個數跟第二個數進行比較,較小者放前面
* 最後再将第一個數和第二個數進行比較,交換位置
*/
if (num1 > num2){
temp = num1;
num1 = num2;
num2 = temp;
}
if (num2 > num3){
temp = num2;
num2 = num3;
num3 = temp;
}
if (num1 > num2){
temp = num1;
num1 = num2;
num2 = temp;
}
System.out.println("從小到大輸出為:"+ num1 +"--"+ num2 +"--"+ num3);
}
2. switch 練習
-
使用 switch 把小寫類型的 char型轉為大寫。隻轉換 a, b, c, d, e. 其它的輸 出 “other”。
提示:String word = scan.next(); char c = word.charAt(0);
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("輸入你想轉換的小寫類型:");
String word = sc.next();
char c = word.charAt(0);
switch (c){
case 'a':
System.out.println("A");
break;
case 'b':
System.out.println("B");
break;
case 'c':
System.out.println("C");
break;
case 'd':
System.out.println("D");
break;
case 'e':
System.out.println("E");
break;
default:
System.out.println("other");
break;
}
}
-
編寫程式:從鍵盤上讀入一個學生成績,存放在變量score中,根據score的值輸出其對應的成績等級:
score>=90 等級:A
70=<score<90 等級:B
60=<score<70 等級:C
score<60 等級:D
public static void main(String[] args){
while (true){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入成績:");
double score = sc.nextDouble();
int grade = (int) (score/10);
if (score < 0 || score > 100){
System.out.println("成績輸入有誤,請重新輸入!");
continue;
}else {
switch (grade){
case 10:
case 9:
System.out.println("等級為A");
break;
case 8:
case 7:
System.out.println("等級為B");
break;
case 6:
System.out.println("等級為C");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
System.out.println("等級為D");
break;
}
}
}
}
3. for 循環
- 列印如下的圖形:三角形
* * * * * * * * * * * * * * * * * * * * * * * * *
public static void main(String[] args){
for (int i = 1; i <= 13; i++) {
if (i < 9){
for (int j = 1; j <= i; j++) {
if (i%2 != 0){
System.out.print("* ");
}
}
System.out.println();
}else {
for (int k = 1;k<=14-i;k++){
if (i%2 != 0){
System.out.print("* ");
}
}
System.out.println();
}
}
}
- 列印1~100之間所有奇數的和
- 列印1~100之間所有是7的倍數的整數的個數及總和(體會設定計數 器的思想)
- 輸出所有的水仙花數,所謂水仙花數是指一個3位數,其各個位上數 字立方和等于其本身。 例如: 153 = 111 + 333 + 555
public static void main(String[] args){
/*列印1-100之間所有的奇數和*/
int sum = 0;
for (int i = 1;i <= 100;i++){
if (i%2 != 0){
sum += i;
}
}
System.out.println("奇數和為:"+ sum);
/*列印1~100之間所有是7的倍數的整數的個數及總和*/
int sum1 = 0;
int count = 0;
for (int i = 1;i<=100;i++){
if (i%7 == 0){
sum1 += i;
count++;
}
}
System.out.println("總和:"+ sum1);
System.out.println("個數:"+ count);
/*輸出所有的水仙花數,所謂水仙花數是指一個3位數,其各個位上數 字立方和等于其本身。
例如: 153 = 1*1*1 + 3*3*3 + 5*5*5*/
System.out.println("所有水仙花的值分别是:");
for (int i = 100;i<1000;i++){
int a = i/100;
int b = i/10%10;
int c = i%10;
if ((a*a*a + b*b*b + c*c*c) == i){
System.out.println(i);
}
}
}
效果截圖:
4. while 循環
-
随機生成一個100以内的數,猜數字遊戲:
從鍵盤輸入數,如果大了提示,大了,如果小了,提示小了,如果對了,就不再猜了,并統計一共猜了多少次?
public static void main(String[] args){
Random rand = new Random();
int result = rand.nextInt(100);
System.out.println(result);
int count = 0;
while (true){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你猜的數:");
int num = sc.nextInt();
if (num > result){
System.out.println("猜大了,再猜");
count++;
continue;
}else if (num < result){
System.out.println("猜小了,再猜");
count++;
continue;
}else {
System.out.println("恭喜你,猜對了");
count++;
break;
}
}
System.out.println("一個猜了"+ count +"次");
}
- 從鍵盤讀入個數不确定的整數,并判斷讀入的正數和負數的個數,輸入 為0時結束程式
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個整數:");
int posNum = 0; // 統計正數的個數
int negNum = 0; // 統計負數的個數
while (true){
int num = sc.nextInt();
if (num > 0){
posNum++;
}else if (num < 0){
negNum++;
}else
break;
}
System.out.println("正數的個數為:"+ posNum);
System.out.println("負數的個數為:"+ negNum);
}
5. do … while 循環
- 山上有一口缸可以裝50升水,現在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。問:小和尚要挑幾次水才可以把水缸挑滿?
public static void main(String[] args){
int water = 15;
int l = 0;
do {
water += 5;
l++;
}while (water < 50);
System.out.println(l +"次,才能挑滿水");
}