Board logo

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

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

本帖最後由 lon 於 2012-8-18 09:46 編輯
0 I4 j/ U8 N, n0 B  c
  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  "+":& `1 V6 \9 ?% l+ y
因為你或許不能掌握考試時JDK的版本,switch-case那邊我建議你用if-else-if取代,程式範例如下:
7 }2 J% J& P3 {. v
9 N$ T: d8 \, N9 @/ u2 H7 N# r( `6 _public class TQC206
/ u0 O0 m- s' S6 ]9 u) T{6 E2 A  K/ F" Q1 Z0 T1 {$ s+ q) F" C
   public static void main(String args[])0 Y9 N  h  u. Z* A
    {+ X4 t$ t7 B! q) v9 f/ O$ w
      float a,b;1 k% P  N& |/ T6 \3 u0 ^8 ?) [- U
      String calc;
1 y! r; z" P' L. x$ z: {* V1 c      try{
* d: e! I9 Y0 U+ |/ m3 H         if(args.length==3){
. \& f; |+ W9 Y            a = Float.parseFloat(args[0]);, b% j4 X7 N# s, N4 _% b
            b = Float.parseFloat(args[2]);; d% F1 l# }6 }8 q. Z7 J" `
            calc = args[1];( @( {# V/ A+ L! t. Z
            if(calc.equals("+")){6 s9 c6 _' e; }* ~0 g2 e
               System.out.println(args[0]+args[1]+args[2]+"="+(a+b));, c! f3 m9 V* ]+ [3 W
            }else if(calc.equals("-")){* Y. @4 X( ~- Q* y7 M  _
               System.out.println(args[0]+args[1]+args[2]+"="+(a-b));
2 D  t9 L$ ]5 t' v* O# y! K* o; {            }else if(calc.equals("x")){: k0 k' t7 ?# b
               System.out.println(args[0]+args[1]+args[2]+"="+(a*b));8 M) m( K$ m1 O0 V  f7 N1 l
            }else if(calc.equals("/"))
$ L# q' ~  w2 @3 \            {
# S. w5 ]5 r5 X; a1 X: ~               if(b==0)
/ e* Q8 T4 q' |               {; C# w% O& I. s; S$ D, w+ i
                 System.out.println("除數不可為 0");! k+ E2 X7 {  a" H0 i
               }else
: F, s+ u( k* H8 m3 \2 k               {
+ h* |6 a) J7 M5 x7 m' |8 N                  System.out.println(args[0]+args[1]+args[2]+"="+(a/b));0 G2 D7 c# s8 O; Y) V% ?/ d% O$ w
               }8 v- S" X5 i+ G  z2 w
            }4 x9 P, }4 R8 ~' F3 n
            else
- M! |% Z3 P+ m            {
4 g; N( W7 r9 Q; b3 c) n' I               System.out.println("第二個引數請使用 + - x / 的其中一種運算符號");" x$ G+ H' A8 P3 ]+ v7 ~
               System.exit(0);
8 {$ ^( L- B/ _- W: k  ?            }9 l& j! L" ]% I% J( K$ p
         }else{
% [+ H1 q# e$ }, {6 B2 z* o; [3 Z            System.out.println("請使用三個引數,如下格式\n 1 + 2");
9 V6 I5 D" {6 _! G         }! {# D3 n' V( t# m8 a
      }& S& E# ^7 Z; T( [: s( C
      catch(ArrayIndexOutOfBoundsException e)( _, t& _) P. C7 g$ m; h
      {
, K9 Z7 E# O8 I4 A6 K, C. B               System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());
4 o: e7 N- |0 R' Y      }
$ [& c8 z) q, Y, e/ [$ V5 w9 q      catch(NumberFormatException e)! U! w- w2 Q+ M
      {
9 h# p9 n3 f* M& o         System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());
) W& X5 U3 s" T( \      }
0 `- a, _& x* \& K# X: g2 T. W      6 Y! O3 R3 E6 ?$ P$ u
    }
# C7 I2 ?0 g& \8 C9 Y}




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