星期五, 4月 23, 2010

2010-04-23_Java_SL100-4

2010-04-23_Java_SL100-4

Notes:
  • &&  ( and 運算)
  • ||     ( or 運算)


Lab: And 運算 與 Or 運算

建立一個程式碼如下

public class And_Or {

    public static void main(String[] args) {
        boolean b;
        int x = 3;
        int y = 3;
        b = ( x == y && y++ >= 3);//因為 x 等於 y , 所以 會執行 y++
        System.out.println("b = "+b);
        System.out.println("x = "+x);
        System.out.println("y = "+y);   // TODO code application logic here
    }

}

輸出結果

b = true
x = 3
y = 4

-----------------------------------------------------------------------------------------------------------------------

但是如果更改程式碼為

public class And_Or {

    public static void main(String[] args) {
        boolean b;
        int x = 3;
        int y = 3;
        b = ( x != y && y++ >= 3);//因為x 不等於 != y 為假, 所以就不會執行後面的 y++
        System.out.println("b = "+b);
        System.out.println("x = "+x);
        System.out.println("y = "+y);   // TODO code application logic here
    }

}

輸出結果為

b = false
x = 3
y = 3

-----------------------------------------------------------------------------------------------------------------------

修改剛剛的程式碼為

public class And_Or {

    public static void main(String[] args) {
        boolean b;
        int x = 3;
        int y = 3;
        b = ( x != y || y++ >= 3);//因為x 不等於 != y 為假, 所以就會執行後面的 y++
        System.out.println("b = "+b);
        System.out.println("x = "+x);
        System.out.println("y = "+y);   // TODO code application logic here
    }

}

輸出結果為
b = true
x = 3
y = 4

-----------------------------------------------------------------------------------------------------------------------

修改程式內容為

public class And_Or {

    public static void main(String[] args) {
        boolean b;
        int x = 3;
        int y = 3;
        b = ( x == y || y++ >= 3);//因為x 等於 == y 為真, 所以就不會執行後面的 y++
        System.out.println("b = "+b);
        System.out.println("x = "+x);
        System.out.println("y = "+y);   // TODO code application logic here
    }

}

輸出結果為

b = true
x = 3
y = 3

Lab: 位元運算

建立一個程式

public class Class0423 {

    public static void main(String[] args) {
       int x = 12;//2進位為 1100
       int y =7;  // 2進位為 0111
       int z;
       z = x & y;// z 為 x 與 y 進行2 進位的 And 運算, 為 0100
       System.out.println("z = "+z);
    }

}


輸出結果為

z = 4

-----------------------------------------------------------------------------------------------------------------------

修改程式碼 練習 XOR 互斥

public class Class0423 {

    public static void main(String[] args) {
       int x = 12;//2進位為 1100
       int y =7;  //2進位為 0111
       int z;
       z = x ^ y;// z 為 x 與 y 進行2 進位的 XOR 運算, 為 1011 互斥為1
       System.out.println("z = "+z);
    }

}

輸出結果為

z = 11

**位移運算位元**
  • >>> 只能用在正號運算上面

Lab:

public class Class042302 {

    public static void main(String[] args) {
    int x = 12;//2進位為0000001100
    int y;
    y = x>>1;//12 往右移動 1位元 就等於 12/2
    System.out.println("y = "+y);
    y = x>>2;//12 往右移動 2位元 就等於 12/4 2的2次方
    System.out.println("y = "+y);
    y = x>>3;//12 往右移動 3位元 就等於 12/8 2的3次方
    System.out.println("y = "+y);
        // TODO code application logic here
    }

}

輸出結果為

y = 6
y = 3
y = 1

-----------------------------------------------------------------------------------------------------------------------

Notes:
  • x += y; --> x=x+y;
  • x -= y;  --> x=x-y;
  • x *= y; --> x=x*y;
  • x /=y;  --> x=x/y;
  • x %=y; --> x=x%y;


Lab: Scanner

 建立一段程式碼

import java.lang.*;
import java.util.*;
public class MyInput {

    public static void main(String[] args) {
     
     Scanner sc;
     sc = new Scanner(System.in);//產生一個新物件, 掃描鍵盤輸入
     String str;
     System.out.println("Input String Data: ");
     str = sc.next();//sc.next()搜尋並傳回來自此掃瞄器的下一個完整旗標。目標為字串
     System.out.println("Hello "+str);
    }

}

輸出結果為

Input String Data: 
0    <------- 此為使用者的輸入值
Hello 0


Lab: 輸入字串

將程式碼改為

import java.lang.*;
import java.util.*;
public class MyInput {

    public static void main(String[] args) {
     
     Scanner sc;
     sc = new Scanner(System.in);//產生一個新物件, 掃描鍵盤輸入
     //String str;
     int istr;
     System.out.println("Input int Data: ");
     istr = sc.nextInt();//sc.nextInt()將輸入資訊的下一個旗標掃瞄為一個 int。目標為int
     System.out.println("Hello "+istr);
    }

}

輸出結果為

Input int Data: 
3  <---此為使用者輸入資料
Hello 3

但是萬一使用者輸入非 int 型態的資料, 就會產生
Input int Data: 
h <----此為使用者輸入資料  
Exception in thread "main" java.util.InputMismatchException
        at java.util.Scanner.throwFor(Scanner.java:857)
        at java.util.Scanner.next(Scanner.java:1478)
        at java.util.Scanner.nextInt(Scanner.java:2108)
        at java.util.Scanner.nextInt(Scanner.java:2067)
        at MyInput.main(MyInput.java:12)
Java Result: 1



Lab: ? :
建立一個程式碼

import java.lang.*;
import java.util.*;
public class MyOp {

    public static void main(String[] args) {
    int x = 3;
    int y = 2;
    String str;
    str = (x>y)?"x>y":"x<y";//如果為真執行?號後面的x>y, 如果為假就執行:號 x<y
    System.out.println("str = "+str);
    }

}

輸出結果為

str = x<y

Lab: 寫一個程式判斷奇數還是偶數

建立程式碼

import java.lang.*;
import java.util.*;
public class InputNumber {

    public static void main(String[] args) {
    Scanner sc =new Scanner(System.in);
    System.out.println("請輸入整數");
    int i = sc.nextInt();
    int x = i%2; // x等於輸入的整數 除以2 的餘數
    String str = (x == 0)?"偶數":"奇數"; // 餘數為0 就是偶數
    System.out.println(str);
    }

}









沒有留言: