JAVA 2 Basic part 2

1.Review

A.Coding Style

     a. jagged alignment
         Purpose: Clear structure, high readability and easy debugging.
      b. Naming rules:
         Variables: Hump-style naming, starting with lowercase, when the next word is encountered, the beginning of the word is capitalized.
         Constant: All uppercase, in case of the next word, connect with the bottom line.
         Category name: Same as the variable rule, but the first word is capitalized first.


A.Coding Style

     a.鋸齒狀對齊
        目的:結構清楚,可讀性高,易除錯。
     b.命名規則:
        變數:駝峰式命名,小寫開頭,遇到下一個單字時,字首變大寫。
        常數:全大寫,遇下一單字,用底線連接。
        類別名稱:同變數規則,但第一單字字首大寫。

B. Variable reason

      a. Definition of variables: borrowed from mathematics (other functions are similar)
         How the variables work in the computer: remember with memory 
      b. The type and size of the variable (container): determined by the data type 
      c. Why do you need integers, floating point numbers, characters/strings, Brin?
      d. Brin variables: In short, the results after "ratio" can be recorded.

B. 變數緣由

     a.變數的定義:借自數學(另有函數也類似)
        變數在電腦如何實作:以記憶體記住
     b.變數(容器)的種類、大小:由資料型態決定
     c.為何需要整數、浮點數、字元/字串、布林?
     d.布林變數:簡言之,能記錄"比大小"之後的結果。

2.Practice 1:Ordering system(Brin)

點餐系統(布林)

同樣輸入 1~5 代表5個餐,試運用 布林 配合比大小之關係運算子,來統計點了哪個餐?

程式碼

import java.io.*;
import java.util.Scanner;

class Sample41
{
   public static void main(String[] args) throws IOException
   {
 String msg1 = "請輸入數字 1~5,代表您要幾號餐。";
      System.out.println(msg1);
      // 簡潔版
      Scanner scan = new Scanner(System.in);
      int i = scan.nextInt();
      boolean isNo1 =(i==1);
      System.out.println("您選的是1餐:"+ isNo1);
      boolean isNo2 =(i==2);
      System.out.println("您選的是2餐:"+ isNo2);
      boolean isNo3 =(i==3);
      System.out.println("您選的是3餐:"+ isNo3);
      boolean isNo4 =(i==4);
      System.out.println("您選的是4餐:"+ isNo4);
      boolean isNo5 =(i==5);
      System.out.println("您選的是5餐:"+ isNo5);
   }
}

結果



3.Practice 2:operator 運算子

試輸入二整數,提示至二個整數的和、差、積、商、餘。(例如 i=3, j=5)

程式碼

import java.io.*;
import java.util.Scanner;

class Sample5
{
   public static void main(String[] args) throws IOException
   {
      System.out.println("請輸入一個整數。");
      Scanner scan1 = new Scanner(System.in);
      int num1 = scan1.nextInt();
 
      System.out.println("請再輸入一個整數。");
      Scanner scan2 = new Scanner(System.in);
      int num2 = scan2.nextInt();
      System.out.println("您輸入二個數字的和是:" + (num1+num2));
      System.out.println("您輸入二個數字的差是:" + (num1-num2));
      System.out.println("您輸入二個數字的積是:" + (num1*num2));
      System.out.println("您輸入二個數字的商是:" + (num1/num2));
      System.out.println("您輸入二個數字的餘數是:" + (num1%num2));
   }
}

結果


歸納第四章範例一至六重點
1.字串和整數相加,會先將整數變成字串,然後串接起來。
   注意:若此整數為二個整數做運算,則應該先以小括號強制。
2.百分比符號(%)為取餘數,用途廣,應用於開關
   例一:求奇、偶數 (A%2==0,偶數)
               非偶數,即奇數 (A%2 !=0,奇數)
               都以0為判斷式,不要用1來做判斷,因為A%2,A可能是負數,-1就判斷不出來。
3. x = x + 1 可簡寫為 ++X 或 X++
   注意:若 ++X 與其他運算式並用,須注意隱含的先後次序。
   建議:若無必要,就將之做成單獨的一個式子。
4. Sample6 利用
    int sum =0;
    sum += Integer.parseInt(strX);
    的另一加總方式,預備與迴圈搭配使用
    注意:+= 是 Java 後來新增, 初學可先跳過。先用 sum = sum =.... 

歸納第四章範例七至十一重點
1.int 與double 之間資料互換時,系統認為 int 資料範圍小,double 的資料範圍大,
   所以 double <-- int ,安全,不警告
   但是 int <-- double ,危險,警告
 解法:強制型別轉換
 例如:double d=3.5;
             int i = (int) d;
2.承上
   double <-- int 系統認為安全,不警告,但是城市可能不安全(小心)
例如:
          double d = 5 / 4 ;
          我們以為 d 的內容是1.25,沒想到卻是1.0。因為5 & 4 是 int。
 解法:
           double d = (double)5 / 4 ;     
           或是 double d = 5.0 / 4 ;


4.第五章練習三:判斷奇偶數
基於上午 Sample4_.java (判斷奇偶數),繼續以下。
-->寫程式,判斷2整數做 + , - , * , / , % 之後,有哪些結果為正整數。
Hint :因為尚未學到流程控制,先利用 boolean 與關連運算子來做。
程式碼

import java.util.Scanner;

class Practice3
{
   public static void main(String[] args)
   {
      System.out.println("請輸入一個整數。");
      Scanner scan1 = new Scanner(System.in);
      int num1 = scan1.nextInt();
 
      System.out.println("請再輸入一個整數。");
      Scanner scan2 = new Scanner(System.in);
      int num2 = scan2.nextInt();
     
      System.out.println("您輸入二個數字的和等於" + (num1+num2) + "。");
      System.out.println("您輸入二個數字的差等於" + (num1-num2) + "。");
      System.out.println("您輸入二個數字的積等於" + (num1*num2) + "。");
      System.out.println("您輸入二個數字的商等於" + (num1/num2) + "。");
      System.out.println("您輸入二個數字的餘數等於" + (num1%num2) + "。");
 
      boolean isEven1 = (num1+num2) > 0;
      System.out.println("二個數字的和是正整數嗎? "+isEven1);
      boolean isEven2 = (num1-num2) > 0;
      System.out.println("二個數字的差是正整數嗎? "+isEven2);
      boolean isEven3 = (num1*num2) > 0;
      System.out.println("二個數字的積是正整數嗎? "+isEven3);
      boolean isEven4 = (num1/num2) > 0;
      System.out.println("二個數字的商是正整數嗎? "+isEven4);
      boolean isEven5 = (num1%num2) > 0;
      System.out.println("二個數字的餘數是正整數嗎? "+isEven5);
 
   }
}

結果

5.第五章練習四:(if 條件式)
點餐系統:利用if (),若輸入 1~5 以外的數,回應"無此餐"。
方法一:利用邏輯運算子,加以判斷。
方法二:&& (且)、|| (或)、! (非)
程式碼

import java.io.*;
import java.util.Scanner;

class Practice5
{
   public static void main(String[] args) throws IOException
   {
 String msg1 = "請輸入數字 1~5,代表您要幾號餐。";
      System.out.println(msg1);

      Scanner scan = new Scanner(System.in);
      int i = scan.nextInt();
      boolean isNo1 =(i==1);
      if (isNo1) System.out.println("您選的是1餐:");
      boolean isNo2 =(i==2);
      if (isNo2) System.out.println("您選的是2餐:");
      boolean isNo3 =(i==3);
      if (isNo3) System.out.println("您選的是3餐:");
      boolean isNo4 =(i==4);
      if (isNo4) System.out.println("您選的是4餐:");
      boolean isNo5 =(i==5);
      if (isNo5) System.out.println("您選的是5餐:");
 
      if(!isNo1 && !isNo2 && !isNo3 && !isNo4 && !isNo5) System.out.println("無此餐");
       
   }
}

結果

6.第五章練習:利用條件式,判斷四則運算
將之前的四則運算練習的結果,利用 if 條件式,列出何者大於0且小於等於10
程式碼

import java.io.*;
import java.util.Scanner;

class sample6
{
   public static void main(String[] args) throws IOException
   {
      System.out.println("請輸入一個整數。");
      Scanner scan1 = new Scanner(System.in);
      int num1 = scan1.nextInt();
 
      System.out.println("請再輸入一個整數。");
      Scanner scan2 = new Scanner(System.in);
      int num2 = scan2.nextInt();
      int a1 = num1+num2;
      int a2 = num1-num2;
      int a3 = num1*num2;
      int a4 = num1/num2;
      int a5 = num1%num2;
      System.out.println("您輸入二個數字的和是:" + a1);
      System.out.println("您輸入二個數字的差是:" + a2);
      System.out.println("您輸入二個數字的積是:" + a3);
      System.out.println("您輸入二個數字的商是:" + a4);
      System.out.println("您輸入二個數字的餘數是:" + a5);
 
      //那些結果是介於0~10之間
      System.out.println("");
      System.out.println("以上計算結果,何者介於0~10之間?");
      if (a1>0 && a1 <=10) System.out.println("和介於0~10之間");
      if (a2>0 && a2 <=10) System.out.println("和差於0~10之間");
      if (a3>0 && a3 <=10) System.out.println("和積於0~10之間");
      if (a4>0 && a4 <=10) System.out.println("和商於0~10之間");
      if (a5>0 && a5 <=10) System.out.println("餘數於0~10之間");
   }
}
結果1

結果2

7.第五章練習:If...else & Switch...case
題目:輸入一整數 (0 ~ 100),代表成績
90~100 A
80~90 B
70~80 C
60~70 D
0~60 E
其他 輸入錯誤
程式碼

import java.io.*;
import java.util.Scanner;

class test8
{
//利用 if... else if ...else
  public static void main(String[] args) throws IOException
    {
 System.out.println("利用 if...else");
 String msg1 = "請輸入數字 0~100,代表成績";
     System.out.println(msg1);
     Scanner scan = new Scanner(System.in);
     int s1 = scan.nextInt();
     if (s1<=100 && s1 >=90)
      System.out.println('A');
     else if (s1<90 && s1>=80)
     System.out.println('B');
     else if (s1<80 && s1>=70)
     System.out.println('C');
     else if (s1<70 && s1>=60)
     System.out.println('D');
     else if (s1<60 && s1 >=0)
     System.out.println('E');
     else
     System.out.println("輸入錯誤");
     main2();
     }

//利用 switch...case + if ... else
   public static void main2() throws IOException
    {
 System.out.println("");
 System.out.println("利用 switch...case");
 String msg1 = "請輸入數字 0~100,代表成績";
      System.out.println(msg1);
      Scanner scan = new Scanner(System.in);
      int s3 = scan.nextInt();
      int s2 = s3/10;
      if (s3>100 || s3<0)
        System.out.println("輸入錯誤");
          else
            switch (s2)
              {
              case 10:
                 System.out.println('A');
                 break;
case 9:
                 System.out.println('A');
                 break;
case 8:
                 System.out.println('B') ;
                 break;
case 7:
   System.out.println('C') ;
                 break;
case 6:
                 System.out.println('D') ;
                 break;
default:
                 System.out.println('E') ;
    }
}
}

結果

No comments: