20120709 J2EE 程式設計七

1."互斥或"運算
用二位元來運算
1.^ (互斥或):2^10==8。只有一個為1,才相加1,其餘為0。
2. &、and (且):2&10==2。只有二者都是一,才相加1,其餘為0。
3. |、or (或):2|10==10。只要有1就相加1,其餘為0。

2.JAVA可以編譯的字元(UnicodeVariable)

// 類別及檔案名稱也改成"大中國"試試看!
// 好玩,但避免這樣用
public class Test {
  static void 列印(String 中文字){
    System.out.println(中文字);
  }
  public static void main(String [ ] args){
    String $_$ = "$_$ ... 我的眼中只有錢!";
    String _U_ = "昏倒在地上! ... _U_";
    String ¥50丹 = "¥50丹 日幣50圓!";
    列印($_$);
    列印(_U_);
    列印(¥50丹);
    String € = "我是歐元!";
    列印(€);
  }
}


3.big5 trouble
中文字盡量用UTF-8存檔,若用big5 或 ANSI 會有問題。
參考老師資料:01_UnicodeVariable_1.zip

4.enum 列舉
以生肖程式為例:

import java.util.*;
public class MyBirthPets2 {
  enum BirthPet{     //類似陣列,但裡面的中文沒有用單引號分隔,所以不是char。
  鼠,牛,虎,兔,龍,蛇,馬,羊,猴,雞,狗,豬
  }
  public static void main(String[] args) {
    BirthPet [] ap = BirthPet.values();
    Scanner s = new Scanner( System.in );
    int y = 0;
    String year;
    do {
      System.out.print("請輸入你的生日西元年: ");
      year = s.next();
      if( year == null || year.length() <=0){
        continue;
      } else {
      try {
          y = (Integer.parseInt(year) - 2008) % 12;
      } catch (Exception e ){
      System.out.println("別鬧了!");
      continue;
      }
        if ( y < 0 ){ y = 12+y; }
        System.out.println("你的生肖是 " + ap[y] +"!!");
/*
       switch(ap[y]){   //類似陣列,但case的中文沒有用單引號分隔,所以不是char。
          case 鼠:
            System.out.println("你的生肖是 鼠!");
            break;
          case 牛:
            System.out.println("你的生肖是 牛!");
            break;
          case 虎:
            System.out.println("你的生肖是 虎!");
            break;
          case 兔:
            System.out.println("你的生肖是 兔!");
            break;
          case 龍:
            System.out.println("你的生肖是 龍!");
            break;
          case 蛇:
            System.out.println("你的生肖是 蛇!");
            break;
          case 馬:
            System.out.println("你的生肖是 馬!");
            break;
          case 羊:
            System.out.println("你的生肖是 羊!");
            break;
          case 猴:
            System.out.println("你的生肖是 猴!");
            break;
          case 雞:
            System.out.println("你的生肖是 雞!");
            break;
          case 狗:
            System.out.println("你的生肖是 狗!");
            break;
          case 豬:
            System.out.println("你的生肖是 豬!");
            break;
          default:
            System.out.println("你大概是外星人!");
        } //switch
*/

       }  //if
      System.out.print("是否再繼續? [y/n] ");
      if ( s.next().equals("n") ){ break; }
    } while (true);
    for ( BirthPet p : BirthPet.values() ){
    System.out.print(p + ", ");
    }
  }  //main
}  //class


5.HTML 的 form 表單 與 JSP 互動
A.HTML 的 form 表單
<html>
  <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body bgcolor='skyblue'>
    <a href='../index.htm'> 回上一頁 </a><hr>
    表單練習
    <form name='f1' method='post' action='check.jsp'>
//method 用post 不用get(預設),因為get會將結果秀在網址列後面加上問號
      帳號: <input type='text' name='act'> </br>   //輸入形式為text 表示 textbox
      密碼: <input type='password' name='pwd'> </br></br>   //輸入形式為password表示內容不顯示
      //radio為radio button,checked為預設值。
      <input type='radio' name='gender' value='female' checked> 女生
      <input type='radio' name='gender' value='male'> 男生
      <input type='radio' name='gender' value='both'> 花生 </br></br>
      //三個radio button必須同名,才會成一個group,有三選一,不然會各自獨立。
      //多選為 checkbox。
      <input type='checkbox' name='favorite' value='1tv'> 電視
      <input type='checkbox' name='favorite' value='2music' checked> 音樂
      <input type='checkbox' name='favorite' value='3movie'> 電影 </br></br>

      目前身分:
      //下拉式選單用 select。跟radio button一樣,必須同名代表在同一group。
      <select name='status'>
        <option value='student'> 學生 </option>
        <option value='social' selected> 社會人士 </option>
      </select> </br></br>
      //清空的按鈕為 reset。送出的按鈕為submit。
      <input type='reset' value='全部清空'>
      <input type='submit' value='確認送出'> <br>
    </form>
  </body>
</html>


B.JSP 互動
<%
  String act = request.getParameter("act");
  out.print( act + "</br>");
  String pwd = request.getParameter("pwd");
  out.print( pwd  + "</br>");

  String gender = request.getParameter("gender");
  out.print( gender + "</br>");
      //多選必須使用陣列來承接。陣列的承接語法多一個Values。
  String[] favorite = request.getParameterValues("favorite");
      //先判斷多選不是空值寫大於0才進行。
  if( (favorite != null) && (favorite.length >0) ){
    for( String s : favorite ){
      out.print( s  + "</br>");
    }
  }
  String status = request.getParameter("status");
  out.print( status + "</br>");
%>


6.猜大小
先建立一個表單,用radio button 來做選大或選小
index.html
<html>
  <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body bgcolor='skyblue'>
    <a href='../index.html'> 回上一頁 </a><hr>
    <form name='f1' method='post' action='ans.jsp'>
    猜大小: </br>
      <input type='radio' name='guess' value='s' checked> (1 ~ 6) 小
      <input type='radio' name='guess' value='b'> (7 ~ 13) 大 </br></br>
      <input type='submit' value='確認'> <br>
    </form>
  </body>
</html>

ans.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<%
  String guess = request.getParameter("guess");
  byte ans =(byte)(Math.random()*13+1);
  if (
       (ans < 7 && guess.equals("s"))
       || (ans > 7 && guess.equals("b"))
       || (ans == 7)
      ){
      out.print( ans + ",你贏了!");
  }
  else {
      out.print( ans + ",你輸了!");
  }
%>
<br>
<a href='index.htm'> 再猜 </a> ?
</body>
</html>
結果:

No comments: