Board logo

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

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

本帖最後由 lon 於 2012-8-18 09:46 編輯
: x+ P5 b" w. k- j! c8 \
  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  "+":. Y) Q  E" L) ]! Z
因為你或許不能掌握考試時JDK的版本,switch-case那邊我建議你用if-else-if取代,程式範例如下:
7 k$ O: n% z) r( f8 L: ]& P; M
2 _! }; b' p/ upublic class TQC206
% Z% j. T' i) S7 k" g3 o# E{
/ X3 q1 I& N0 Z; R0 Q- y   public static void main(String args[]): z! q$ w  q! a! _- W$ o
    {
! r4 X- p6 R; G7 @! F! x      float a,b;
: n. l9 U4 T" {# B9 }      String calc;
: \* }2 p& D5 v      try{
- e  f' F/ j0 `/ L& ?! h" \         if(args.length==3){
2 M. t% ]5 m2 k* v            a = Float.parseFloat(args[0]);% ~3 y: l8 ?: \% ]1 @. O
            b = Float.parseFloat(args[2]);. L% ?: J& U7 U
            calc = args[1];& L* M! {! I) b+ {
            if(calc.equals("+")){
: m' Y; o% _2 j& F) x! C& \               System.out.println(args[0]+args[1]+args[2]+"="+(a+b));' L$ k6 y. o* l; ~* Y) m
            }else if(calc.equals("-")){6 s2 I+ A* ~; ?
               System.out.println(args[0]+args[1]+args[2]+"="+(a-b));7 f; E5 r! v) q
            }else if(calc.equals("x")){9 q# W( _5 ^4 S" L
               System.out.println(args[0]+args[1]+args[2]+"="+(a*b));
, G8 s% |- W# A) Q1 o0 c            }else if(calc.equals("/"))
$ G; k" t8 M0 Y$ l9 b2 e; X, t6 `( I            {6 F. J2 y& N0 F6 k/ r
               if(b==0)$ `% P2 o0 @. [6 @
               {
: a6 U8 l* ~9 l3 M: w                 System.out.println("除數不可為 0");
* I: Y) z" v' W4 f; N               }else  U; @: J& D5 {1 z! y  g$ J
               {$ F3 f0 g7 S) |! H! H$ ]4 \
                  System.out.println(args[0]+args[1]+args[2]+"="+(a/b));
, [% T2 e5 T% p. e/ a               }) c5 _# |. F& S+ i+ t" X+ z
            }0 z! q- n% ?3 j
            else
0 W# O6 z% U: w. A            {1 s& W4 z( ?+ M' @8 B& w
               System.out.println("第二個引數請使用 + - x / 的其中一種運算符號");
' T5 j& J2 B/ t) f4 N7 p               System.exit(0);
$ r" B' b2 r! ]" j            }4 X- s( U/ g  T
         }else{
% A0 Q, k5 J; e8 Z' ^; N            System.out.println("請使用三個引數,如下格式\n 1 + 2");- C! O$ R. w7 B% a
         }
9 k" T6 ~2 Y* `4 a% H2 ?      }; Z7 ^& W4 q5 @: M) z% w( }
      catch(ArrayIndexOutOfBoundsException e)& i9 V2 j; c$ d2 f& w6 K% j
      {/ v. ~. O9 h9 p$ |7 X! v
               System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());6 Y: f/ A. U# F; `1 M7 i5 K& p
      }
3 i( I/ s1 ~* X' W# S' a% k6 P) T      catch(NumberFormatException e)
. W* F9 w; i0 r8 p! |' W" M$ U      {
; g' e6 _6 C# a. N. s0 C3 B0 }         System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());8 }* B# s. @/ s4 m
      }! F$ T6 ^7 P0 W7 u6 r" Q0 Y
      
' |7 m; p  u# V% k. N2 [' D    }
! y' ]+ C+ K" P9 u: j% E! m2 V}




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