返回列表 發帖

為什麼錯,請老師解答!

本帖最後由 lon 於 2012-8-18 09:46 編輯
0 s) F! d8 l6 w: G# A% `
  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. }
複製代碼
陳彥綸

switch裡面要用字串的話,JDK必須要使用1.7以上,還有case後面不該緊接著判斷字串,應該要加一個空白,例如:case  "+":( M- Y$ c! m  c6 z! u4 V8 `. u: B' S/ `
因為你或許不能掌握考試時JDK的版本,switch-case那邊我建議你用if-else-if取代,程式範例如下:
1 E' k" n( B( H! N. B6 C0 }, p& V" t2 ]* w' h7 K1 i
public class TQC2062 H9 s7 n( l" `
{* D8 d& |" P, w& ?0 ]% i
   public static void main(String args[])% W6 r$ z. ^0 q5 B* W# W  V; f
    {# v2 V" X  P6 O  e" ~1 D
      float a,b;9 p) |: x* c) R3 m# a
      String calc;$ s( u4 g/ ?& k  A, i" n& A
      try{
* U% A/ ?7 }+ F4 ]: e3 F: j         if(args.length==3){! ]# ~0 l8 p' z  y& k* X0 v
            a = Float.parseFloat(args[0]);6 k( W7 T+ O& e8 D  t
            b = Float.parseFloat(args[2]);
. w; I3 r' s' [            calc = args[1];
- ~1 {. N2 ]+ D: x" l            if(calc.equals("+")){& l  }, [! ^- y( x3 }9 _0 r
               System.out.println(args[0]+args[1]+args[2]+"="+(a+b));. _7 L) v; k' L9 ^  N3 ~
            }else if(calc.equals("-")){- t- g+ \2 v, ^  W8 I
               System.out.println(args[0]+args[1]+args[2]+"="+(a-b));) F7 F; @  R- B' e4 c
            }else if(calc.equals("x")){0 [0 [: b8 e# ?* Z5 I8 @! @7 P
               System.out.println(args[0]+args[1]+args[2]+"="+(a*b));2 ?2 o% Y% s# O: n4 R5 d
            }else if(calc.equals("/"))3 _% q2 Y9 O$ R
            {
0 x: {8 [# F& j) G# W- w$ ~' U               if(b==0)
$ O6 o4 b; M' p8 Z1 }) m7 d* h3 a( |+ |               {$ r: X4 c* s5 T5 {, I
                 System.out.println("除數不可為 0");& C( q3 g4 [8 N( M, j+ J
               }else
# _2 r/ d* [: d0 n               {
/ h8 Q, g  }9 w# e% D" t                  System.out.println(args[0]+args[1]+args[2]+"="+(a/b));% m: G! o/ r& p! R3 ^5 `1 c
               }: K! h7 B, ~5 ?* {0 R
            }
' L/ A4 N; Q& i# S3 `            else
  x8 s& z1 Z4 g3 X6 y8 R            {" ]6 w/ Q* r: v! G; O4 q) r
               System.out.println("第二個引數請使用 + - x / 的其中一種運算符號");. T, E  y" L+ P; @  o& v
               System.exit(0);, B: X: c8 \9 |/ S$ ]
            }
( s- D0 a0 i5 [$ g" G/ D         }else{- P* H: R4 _. g5 P% j" N" S/ K
            System.out.println("請使用三個引數,如下格式\n 1 + 2");4 o: y0 j7 u5 u8 W6 {8 f
         }) Y5 O' O) `7 Y. c+ Y: e  c
      }
4 w$ j& O3 R" M# S      catch(ArrayIndexOutOfBoundsException e)
8 n0 |, P, @# ^9 ]3 z# ~9 }      {& {7 v& ?6 i! q  ~  [
               System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());3 e( o* Y* p! B6 A9 A( t, Y7 L: f
      }/ A, s; {. {  {
      catch(NumberFormatException e)
$ e9 u5 ~# a$ n( @5 L      {
/ U7 j  I+ x# a. d' F         System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());
( ^6 O. w" e4 c# l9 p% x# ?4 ~      }  o' L! G: A- e( V8 E7 [: X
      
) G0 `0 C" m6 U, i" Q( ^6 r4 q* }    }1 ~) o% w) k! \$ x
}

TOP

返回列表