2015-11-14 35 views
-3
public class Calculator { 
    public static void main(String[] args) { 
     if (args.length < 3) { 
      System.out.println("Usage: java Calculator operand1 operator operand2"); 
      System.exit(0); 
     } 
     int result = 0; 
     switch (args[1].charAt(0)) { 
     case '+': 
      result = Integer.parseInt(args[0]) + Integer.parseInt(args[1]); 
      break; 
     case '-': 
      result = Integer.parseInt(args[0]) - Integer.parseInt(args[1]); 
      break; 
     case '*': 
      result = Integer.parseInt(args[0]) * Integer.parseInt(args[1]); 
      break; 
     case '/': 
      result = Integer.parseInt(args[0])/Integer.parseInt(args[1]); 
      break; 
     } 
     System.out.println(args[0] + ' ' + args[1] + ' ' + args[2] + " = " + result); 
    } 
} 

當我跑在終端Calculator.java,我嘗試了一些方法是這樣的:如何調用一個java main函數?

Rasperry:src maggiesmac$ javac Calculator.java 
Rasperry:src maggiesmac$ java Calculator 1+2 
Usage: java Calculator operand1 operator operand2 
Rasperry:src maggiesmac$ java Calculator 1 + 2 
Exception in thread "main" java.lang.NumberFormatException: For input string: "+" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.lang.Integer.parseInt(Integer.java:572) 
    at java.lang.Integer.parseInt(Integer.java:615) 
    at Calculator.main(Calculator.java:15) 
Rasperry:src maggiesmac$ java Calculator.main(1,+,2) 
-bash: syntax error near unexpected token `(' 

所以,我怎麼能調用Java main()方法?我應該如何傳遞參數給它?

+3

你怎麼看'的Integer.parseInt(參數[1]'用呢命令行參數'1 + 2'?你認爲例外情況是怎麼告訴你的? –

+2

你確實調用了主函數,如果你真的讀到輸出,你會發現有語法錯誤 –

+2

你的主函數被調用,這不是問題,看看錯誤信息,你試圖把某些東西解析成一個整數,顯然不是一個整數 –

回答

0

請更改案例結構中的索引(如@SotiriosDelimanolis建議的那樣)。此外,我們還可以使用字符串的情況下:

public class Calculator { 
    public static void main(String[] args) { 
     if (args.length < 3) { 
      System.out.println("Usage: java Calculator operand1 operator operand2"); 
      System.exit(0); 
     } 
     int result = 0; 
     switch (args[1]) { 
     case "+": 
      result = Integer.parseInt(args[0]) + Integer.parseInt(args[2]); 
      break; 
     case "-": 
      result = Integer.parseInt(args[0]) - Integer.parseInt(args[2]); 
      break; 
     case "*": 
      result = Integer.parseInt(args[0]) * Integer.parseInt(args[2]); 
      break; 
     case "/": 
      result = Integer.parseInt(args[0])/Integer.parseInt(args[2]); 
      break; 
     } 
     System.out.println(args[0] + ' ' + args[1] + ' ' + args[2] + " = " + result); 
    } 
} 
0

您也可以嘗試下面的代碼,得到的結果

class Calculator { 
    public static void main(String[] args) { 
     if (args.length < 3) { 
      System.out.println("Usage: java Calculator operand1 operator operand2"); 
      System.exit(0); 
     } 
     int result = 0; 
    char op = args[1].charAt(0); 
    System.out.println((int)op); 

    int ope = (int)op; 

     switch (ope) { 
     case 43: 
      result = Integer.parseInt(args[0]) + Integer.parseInt(args[2]); 
      break; 
     case 45: 
      result = Integer.parseInt(args[0]) - Integer.parseInt(args[2]); 
      break; 
     case 42: 
      result = Integer.parseInt(args[0]) * Integer.parseInt(args[2]); 
      break; 
     case 47: 
      result = Integer.parseInt(args[0])/Integer.parseInt(args[2]); 
      break; 
     } 

     System.out.println(args[0] + ' ' + args[1] + ' ' + args[2] + " = " + result); 
    } 
}