Board logo

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

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

本帖最後由 lon 於 2012-8-18 09:46 編輯
* f+ x- D2 {- U: O3 ~
  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  "+":
) ?$ N. ~6 w, g' K. T! f. U. S因為你或許不能掌握考試時JDK的版本,switch-case那邊我建議你用if-else-if取代,程式範例如下:& i' ~- W1 ]9 O
7 S* [& f+ t. ^& C2 m
public class TQC206" P3 ^4 A1 w/ H/ ]- ?
{* \# l5 q" L+ O/ w4 I4 h. k
   public static void main(String args[])
0 v# g4 a. ~" \4 H    {
% K$ N& _- P. Z) \8 y: b' b5 a- Y* J      float a,b;3 {8 p# a: n; X8 ?- ^
      String calc;
9 N) Q- \  w1 \/ F2 }4 i      try{' N, m$ s: Y5 B. ?
         if(args.length==3){. b# ?8 `- I  a: O. @$ u- j/ {
            a = Float.parseFloat(args[0]);0 s" p4 [! {/ Z& J: ~, H
            b = Float.parseFloat(args[2]);
( ^! _5 u& w1 M5 q            calc = args[1];
1 w( Y. r$ W) A# k            if(calc.equals("+")){
- m7 J- F/ ]: \; ^; W! p$ j% W9 m               System.out.println(args[0]+args[1]+args[2]+"="+(a+b));
6 X" s* j$ ^' a4 j) c            }else if(calc.equals("-")){
% b4 i5 W5 S( _! @               System.out.println(args[0]+args[1]+args[2]+"="+(a-b));" f* \/ d% A; I
            }else if(calc.equals("x")){
4 S) _) ^/ ~: E  ]6 T# ?: k               System.out.println(args[0]+args[1]+args[2]+"="+(a*b));
# R3 c* w, T7 l+ P& u0 M            }else if(calc.equals("/")). M& m& r$ a. K+ T4 z
            {" Q) U. e8 {0 x" o! _7 f2 ^
               if(b==0)
0 w6 d2 Z# Y: ~# _: X               {' _% V3 W& h, d
                 System.out.println("除數不可為 0");
5 @6 d7 ~+ _  O: ?0 ~               }else2 M+ G- T0 P  l$ C  ^  C- c* D- K
               {
$ X. q- X/ a5 i) A: R- B- l                  System.out.println(args[0]+args[1]+args[2]+"="+(a/b));1 m2 Z5 B/ ]- p. h& D1 b) u! y
               }
) m" K6 h" S1 q) @. c0 `            }
2 N- g1 ]$ s. P7 v6 a1 Y0 n8 h            else
7 q; D8 ?0 N# E$ N            {
& C! u1 ?9 V1 n: {               System.out.println("第二個引數請使用 + - x / 的其中一種運算符號");
+ p) W: M0 I# C# i! T. O: [6 J               System.exit(0);' ?+ d4 z2 g# P, P! d+ m% K% l
            }" K6 k9 z1 q/ U6 ]3 h+ y
         }else{( L% X, i1 `+ m" P0 m
            System.out.println("請使用三個引數,如下格式\n 1 + 2");
  ~: H+ p% z: X; H         }  H8 f- K# p) h, D
      }& J$ e0 {7 l+ G' w! H7 W* e
      catch(ArrayIndexOutOfBoundsException e)
5 ?  C  E$ v7 O; I1 L      {
8 H# {1 K9 }/ ]* r" E# @               System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());$ o- }( R/ `# S  Q
      }* ]9 m  @/ e3 B' M
      catch(NumberFormatException e)
( X5 q; y/ O- L7 y      {2 y& E5 Q; A( r0 C: g
         System.out.println("使用引數不對,請使用如下格式\n 1 + 2\n"+e.getMessage());- r8 W1 r4 `0 r7 ~' @
      }
( F& ^9 U  p( M( A5 [1 V( E# c      
' z# v1 v6 I- N  C  u8 `/ `    }6 _  j3 ?1 S3 q$ N, P  I: B4 y
}




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