Board logo

標題: 為什麼錯,請老師解答! [打印本頁]

作者: lon    時間: 2012-8-18 09:32     標題: 為什麼錯,請老師解答!

本帖最後由 lon 於 2012-8-18 09:46 編輯
2 ~4 o* g2 v* u8 p' E" |( B
  1. public class jva206 {
  2.         public static void main(String[] args) {
  3.                 try{
  4.                 if(args.length==3){
  5.                         float a=Float.parseFloat(args[0]);
  6.                         float b=Float.parseFloat(args[2]);
  7.                         switch(args[1]){
  8.                         case"+":
  9.                                 System.out.println(a+"+"+b+"="+(a+b));
  10.                                 break;
  11.                         case"-":
  12.                                 System.out.println(a+"-"+b+"="+(a-b));
  13.                                 break;
  14.                         case"x":
  15.                                 System.out.println(a+"*"+b+"="+(a*b));
  16.                                 break;
  17.                         case"/":
  18.                                 if(b==0){
  19.                                         System.out.println("除數不可為0");
  20.                                         System.exit(0);
  21.                                 }
  22.                                 System.out.println(a+"/"+b+"="+(a/b));
  23.                                 break;
  24.                         default:
  25.                                 System.out.println("引數格式不對,請使用如下格式\n Calc 1 + 2");
  26.                                 break;
  27.                         }
  28.                 }else{
  29.                         System.out.println("引數格式不對,請使用如下格式\n Calc 1 + 2");
  30.                         System.exit(0);
  31.                 }
  32.                 }catch(Exception e){
  33.                         System.out.println("引數格式不對,請使用如下格式\n Calc 1 + 2");
  34.                         System.exit(0);
  35.                 }
  36.         }
  37. }
複製代碼

作者: ray    時間: 2012-9-1 22:34

switch裡面要用字串的話,JDK必須要使用1.7以上,還有case後面不該緊接著判斷字串,應該要加一個空白,例如:case  "+":& M+ u7 G2 }" b* V6 l  r
因為你或許不能掌握考試時JDK的版本,switch-case那邊我建議你用if-else-if取代,程式範例如下:3 f3 O- g6 W+ A

& v' }8 Z2 J* B# X$ p& jpublic class TQC206# `2 E- P2 I6 z2 T+ D' P% |
{
  d) |0 o6 ~* ^/ @$ \9 m, x' d   public static void main(String args[])0 u. [0 R6 _' t9 |7 a2 W4 F& }
    {. c: S- z) u" U4 e+ V- D, _
      float a,b;6 ^* Y/ K- n% [' R$ G% f) _$ O5 J" U
      String calc;$ x" O) c/ n" S. q. _
      try{- V2 j* F7 N" }% J4 [
         if(args.length==3){/ D! a- O0 O* v9 v" u
            a = Float.parseFloat(args[0]);
' f" S- {) `  t5 o2 t( e            b = Float.parseFloat(args[2]);5 x! N' F$ q! @' {  X' X
            calc = args[1];
% }, k# X9 ]: U  b' R            if(calc.equals("+")){
# y4 g) x1 ?2 |# i0 _4 F               System.out.println(args[0]+args[1]+args[2]+"="+(a+b));9 a- v( L- D+ N& A. |
            }else if(calc.equals("-")){1 m9 c4 ]" B  }$ z
               System.out.println(args[0]+args[1]+args[2]+"="+(a-b));! K7 w' T: {6 B1 w$ k4 t) w
            }else if(calc.equals("x")){
8 u, N: Y! c! Q  R0 f6 ]- X               System.out.println(args[0]+args[1]+args[2]+"="+(a*b));
/ x7 j, g/ C# U, y8 o            }else if(calc.equals("/"))
3 M! K* f1 }& K$ e( Y            {
( J- I3 T% F. Z               if(b==0); O# u3 Z7 E  B: b+ ]
               {5 K2 E: M9 \1 c. O7 g: y2 n
                 System.out.println("除數不可為 0");4 l! E% B7 s. Y: {  i4 \. n5 ~
               }else
  D& N% ]  \! a+ u. r5 g' I               {. N- ?8 B  j6 a- S6 R
                  System.out.println(args[0]+args[1]+args[2]+"="+(a/b));$ I5 Z+ K5 n' _
               }* ]" x; w' z/ K9 t( q
            }
' n; S; {. c, D' a9 h' @" E" u            else2 W* Y  M9 V0 I1 u" E; f, m' @
            {. B  F) w3 Q* g' l2 e! K
               System.out.println("第二個引數請使用 + - x / 的其中一種運算符號");: _0 d% J  Y6 S4 A
               System.exit(0);
# F8 q* P6 s$ c* C5 b            }: f( d+ z; I" [, t- B
         }else{) o1 o) b5 t  @/ R0 c" l
            System.out.println("請使用三個引數,如下格式\n 1 + 2");
. G( e, x0 D6 W( h: Q         }
7 U$ u% M$ v& l1 G$ K8 ~% h6 D- O      }
4 M, \7 G! b+ x7 d- B7 {      catch(ArrayIndexOutOfBoundsException e)
( }2 R; \( j6 _: X      {
4 ~6 a: w% C6 R, o9 r* j3 f               System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());
; e" z" _* `/ H1 n: K      }
: G; T4 \/ a8 Q" O      catch(NumberFormatException e)) ?1 x, f& {$ T4 o6 I
      {+ i. k9 t9 |; q3 s
         System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());, k1 e6 H% }& N" {0 q
      }
( v7 L* g" h% J      7 j# b' A& t* B$ K
    }. a* ~8 U2 y. n# k
}




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2