JAVA 2 Basic part 3

1.歸納第五章重點
a.為何要學 boolean
   因為可記錄 "比較"結果
b.為何要學 if ()
   因為光靠 boolean 程式太冗長
 c.為何要學 if-else
   因為光靠 if 例外不易處理
d. 為何要學 if-else if-else
   因為光靠 if-else 階層太多,無法一目了然
e.為何要學 switch-case
   因為要1.最佳化效能,但無法取代 if 語法
               2.結構清楚

2.歸納第五章 Sample重點
a. else, else if 不能單獨成立,需搭配 if
b. if, else 若內含一道敘述,則可省略 { , }
c.char 其實可以當作整數來用,例如:'A'的整數值是65。(可查ASCII)
d. ?:是一種三個運算元的條件指令,可以利用 if-else 來做
範例:
if (a > b) {
  max = a;
}
else {
  max = b;
}
上述可用下列代替
max = (a > b) ? a : b;


e. 從 sample 7 的 if (res=='y' || res=='Y'),可知:
    1.邏輯 || 寫成邏輯 && 程式語法沒錯,邏輯錯
    2. 多練習小程式 & 事前分析,以累積經驗,可以避免上述的邏輯錯誤。

3.第六章迴圈之一
現代語法三大迴圈 (Loop) 指令
1. for 迴圈 (counter-controlled 計數器)
   語法:for ( A ; B ; C; )
   說明:A、B、C三者為 optional (可有可無)
               A:初始化計數器 (counter)
               B:條件控制 ( for 的結束條件,符合條件就繼續迴圈;不符合則跳出迴圈,執行下一行程式。)
               C:步進控制 (step wise 用來控制 counter)

2.while  迴圈 
參考
20120611 JAVA2 語言基礎四
3. do-while 迴圈

參考
20120611 JAVA2 語言基礎四


4.第六章練習一
題目:試利用 for 迴圈,配合鍵盤輸入。當輸入字串為 quit 時,結束程式;
            若未結束,就將所輸入的訊息提示出來。
Hint:須利用String 所提供的 equals() 方法,才能達成。
程式碼







結果



5.第六章練習二
題目:將點餐系統加上 for 迴圈。再多加一個結束的功能,當輸入999時就結束迴圈。

程式碼一
import java.io.*;
import java.util.Scanner;
//點餐系統 (用 if-else ) 加上 for迴圈,輸入999為結束。
class Sample61
{
   public static void main(String[] args) throws IOException
   {
 int i=0;
 for (; i!=999 ;) //持續在迴圈內的條件要設為 i 不等於999
   {
 String msg1 = "請輸入數字 1~5,代表您要幾號餐。";
     System.out.println(msg1);

     Scanner scan = new Scanner(System.in);
      i = scan.nextInt();
     if (i==1)
     System.out.println("您選的餐是:"+ i);
     else if (i==2)
     System.out.println("您選的餐是:"+ i);
     else if (i==3)
     System.out.println("您選的餐是:"+ i);
     else if (i==4)
     System.out.println("您選的餐是:"+ i);
     else if (i==5)
     System.out.println("您選的餐是:"+ i);
     else if (i==999)      //因為程式一開始執行後就一直在迴圈內,所以需要在這裡設999
    ;   //輸入999後,if 在這條件下不需做任何事,所以用;讓程式回 for判斷後跳出迴圈
     else
     System.out.println("輸入錯誤");  
 }
 System.out.println("Bye-Bye");
   }
}

結果


程式碼二
//點餐系統 (用 switch-case ) 加上 for迴圈,輸入999為結束。

import java.io.*;
import java.util.Scanner;
//點餐系統 (用switch-case)加上 for迴圈,輸入999為結束。
class Sample62
{
   public static void main(String[] args) throws IOException
   {
 int i=0;
 for (; i!=999 ;){
   
 String msg1 = "請輸入數字 1~5,代表您要幾號餐。";
     System.out.println(msg1);

     Scanner scan = new Scanner(System.in);
      i = scan.nextInt();
     switch (i){
      case 1:
      System.out.println("您選的餐是:"+ i);
      break;
      case 2:
      System.out.println("您選的餐是:"+ i);
      break;
      case 3:
      System.out.println("您選的餐是:"+ i);
      break;
      case 4:
      System.out.println("您選的餐是:"+ i);
      break;
      case 5:
      System.out.println("您選的餐是:"+ i);
      break;
      case 999:
       System.out.println("Bye-Bye");
      break;
      default:
     System.out.println("輸入錯誤");
     }
 }      
   }
}


結果同上

6.第六章課本練習題(P.124~125)
第一題
程式碼
import java.io.*;
//課本第六章練習題1。
class E61
{
   public static void main(String[] args) throws IOException
   {
System.out.println("輸出1~10的偶數");
for (int x=2; x<=10; x=x+2){
System.out.println(x);
}
   }
}

結果

第二題
程式碼一 (do...while)
import java.io.*;
import java.util.Scanner;
//課本第六章練習題2。
class E62
{
   public static void main(String[] args) throws IOException
   {
 String msg1 = "請輸入考試成績,輸入0就結束。";
     System.out.println(msg1);
   
     int num=0;
     int sum=0;
   
     do{
       Scanner scan = new Scanner(System.in);
       num = scan.nextInt();
       sum = sum + num;
     } while (num!=0);
   
     System.out.println("輸入總分為"+sum);  
   }
}

結果
程式碼二 (for 迴圈)

import java.io.*;
import java.util.Scanner;
//課本第六章練習題2。
class E62
{
   public static void main(String[] args) throws IOException
   {
 String msg1 = "請輸入考試成績,輸入0就結束。";
     System.out.println(msg1);
   
     int num=1;
     int sum=0;
     for (; num!=0;)
     {
       Scanner scan = new Scanner(System.in);
       num = scan.nextInt();
       sum = sum + num;
     }    
     System.out.println("輸入總分為"+sum);  
   }
}


程式碼三 (for 迴圈 - 老師解法)
import java.util.Scanner;

public class TestP124 {
public static void main(String[] args) {
int sum = 0;
System.out.println("請輸入整數0~100代表成績:");
for( ; ; ) {
Scanner s = new Scanner(System.in);
int score = s.nextInt();
if(score==0) {
System.out.println("總分 "+sum+" 分");
break;
}
sum = sum + score;
}
}
}


第三題
程式碼
import java.io.*;

//課本第六章練習題3。
public class E63
{

public static void main(String[] args) throws IOException
{
System.out.println("九九乘法表");
for (int i=1; i<10; i=i+1){
for (int j=1; j<10; j=j+1){
System.out.print(i+"X"+j+"="+i*j+"\t");
}
System.out.println("\n");
}
}
}

結果


第四題
程式碼
import java.io.*;
public class E64 {

public static void main(String[] args) throws IOException
{

for (int i=1; i<6; i=i+1){
for (int j=0; j<i; j=j+1){
System.out.print("*");
}
System.out.println("\n");
}
}

}

結果


第五題
程式碼
import java.io.IOException;
import java.util.Scanner;
public class E65
{
public static void main(String[] args) throws IOException
{
System.out.println("請輸入大於2的整數");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
for (int i=2; i<=num; i=i+1){
if (i==num){
System.out.println(num+"是質數");
}
else if (num % i==0){
System.out.println(num+"不是質數");
break;
}
}
}

}

結果一
結果二





No comments: