Board logo

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

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

本帖最後由 lon 於 2012-8-18 09:46 編輯
" B9 L" P$ {( A- p
  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  "+":
. v9 R" V0 i( f' u( O2 g/ z因為你或許不能掌握考試時JDK的版本,switch-case那邊我建議你用if-else-if取代,程式範例如下:
/ g5 l* O  B" s5 y1 D+ L( e
$ B+ a0 Y; I* O" Q$ q: Vpublic class TQC206  U7 }( {0 A! J& f7 C  T; h' D9 n
{; G. b6 Z$ [2 z4 a$ r% C. B5 h
   public static void main(String args[])
8 N1 {. K- N5 j% {; H    {
; q7 t- Y( P, S! m      float a,b;, K( D, [& q, f" E% i& ^! Q5 P, L
      String calc;1 }5 e( H: i' q* R
      try{, J0 ]& ^1 U6 {( [2 Q! r0 o
         if(args.length==3){
2 C. o. p/ `3 P            a = Float.parseFloat(args[0]);' K/ \* j+ f; d8 `  B5 z& w
            b = Float.parseFloat(args[2]);7 o# s) i+ N) o# W3 N
            calc = args[1];/ q- |' p* ^: v! y8 X( _8 F" I
            if(calc.equals("+")){8 B* a8 E# @4 I( p7 D/ P, g* h9 q
               System.out.println(args[0]+args[1]+args[2]+"="+(a+b));8 n$ z& w7 |- r/ N0 @, y  V
            }else if(calc.equals("-")){
" j, R" Q! L) g! V. s/ a3 Z4 j               System.out.println(args[0]+args[1]+args[2]+"="+(a-b));
, I# o6 q9 ~- u1 D+ X3 V) N$ O6 r            }else if(calc.equals("x")){- M. Y" _, {4 q0 t  a# P. q5 V
               System.out.println(args[0]+args[1]+args[2]+"="+(a*b));- C# |. i9 @4 ^* B
            }else if(calc.equals("/"))2 [, E* R1 B) X9 i! z2 ^
            {3 p0 |" m6 {2 ?& N& H
               if(b==0)
0 y; Q% z5 N* `+ _6 Q# w               {" v, ~3 d% }- q5 N
                 System.out.println("除數不可為 0");
- G' O2 [6 j5 m+ o               }else2 q( C. n& n+ k5 J' X# S. z
               {, a  i$ r0 B4 U) [4 T5 b
                  System.out.println(args[0]+args[1]+args[2]+"="+(a/b));
& Z* h$ C' _* |3 F               }
& Q6 L4 b% g: a            }
7 w& k5 s# b2 w4 ~) `9 T" `2 M2 D            else
1 }* d, l- B; U% q9 |1 m2 n            {
( ?2 O% h% \; r( L8 l- C. u               System.out.println("第二個引數請使用 + - x / 的其中一種運算符號");2 D* V. b" z8 G) X, g9 g8 O( W
               System.exit(0);
; C+ `5 n. e' E2 Y' O            }
: G6 j+ s- |  `9 _         }else{9 i3 L: G& K5 L8 f, N
            System.out.println("請使用三個引數,如下格式\n 1 + 2");( u+ q% f7 x( U+ @. E
         }( X5 ?" ]* k  }
      }% `# L1 Z( j! g7 s1 |" n
      catch(ArrayIndexOutOfBoundsException e)9 J2 e; _$ x( Y  I* H; H
      {
$ ?1 w3 r+ n) ?               System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());
9 ]+ N+ b* [+ Z, x( c0 K4 l      }: l# h, w( J; F" e: h( x  B
      catch(NumberFormatException e)
* A. X; P- g! O& J, U7 E1 e" L7 K      {
/ ]* Z6 q; M: L1 _+ x8 s  t+ e         System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());
( q0 O8 Y6 @% B0 Q5 \* i      }
% K7 p$ V2 s* c% H& @8 Z: L3 m      + ?2 C# v6 F. T0 B
    }3 D4 ^2 P: A% @0 J
}




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