2013-08-26 84 views
0

這裏是主程序從分配相關的部分:寫作計算器類爲「命令行計算器」程序(JAVA)

public static void main(String [] args) { 

     int characters = args.length; 
     if (characters < 3) 

      System.out.println("You did not type in a calculation!"); 

     else if (characters % 2 == 0) 

      System.out.println("Invalid number of command line parameters."); 

     else { 

      Calculathor counter = new Calculathor(); 
      counter.count(args); 
     } 
    } 
} 

我只允許寫如下所示的類(計算器)分配到作業中的程序中。我無法弄清楚如何從計算中獲得可打印的結果。

我認爲switch語句按照預期從用戶的輸入接收操作符並將其使用,但我需要其他的東西來獲得實際結果。

class Calculator { 

int result; 
int i = 0; 

    String[] args; 

    void count(String[] args) { 


    switch (args[i].charAt(i)) { 
    case '+': result = Integer.parseInt(args[i]) + 
    Integer.parseInt(args[i+2]); 
    break; 

    case '-': result = Integer.parseInt(args[i]) - 
    Integer.parseInt(args[i+2]); 
    break; 
    } 

System.out.println("\nResult of the calculation " + args[0] + " + " + args[2] + " + " + args[4] + " - " + args[6] + " is " + result); 

    } 
} 
+0

你會得到結果值int結果變量? –

回答

0

這裏的答案是一些指針:

Calculathor counter = new Calculathor(); 

也許應該

Calculator counter = new Calculator(); 

而且,一個switch statement是多了還是少了,如果-ELSEIF-ELSE語句替代(請參閱鏈接教程進行說明)。

您可能想要loop覆蓋每個參數並檢查它是數字還是操作符。例如:

for(String arg: args){ 
    ///Code 
} 

for(int i = 0; i < args.length; i++) { 
    //Code 
} 

在這個循環中,您可以來檢查,如果當前arg是一個int或操作者的switch語句。你可以,例如,增加i超過一做一個總結,在每次迭代中,如i+=3代替i++(警告:通過想象,所以你沒有得到一個ArrayIndexOutOfBoundsException

而且,可能就沒有必要對於charAt,因爲每個參數都是長度爲1的字符串(我假設)。如果你有一個大字符串,你可能只想循環使用args[0]

0

不應該迭代args-Array,並在循環時增加i(例如,通過應用for-loop)?

你提供了足夠的cmd參數給你的程序嗎?

0

好吧,我不想做你的作業,但我看到一對夫婦的事情,可能會導致你的問題:

你永遠不會改變我的價值:

int i = 0; 

這意味着你的switch語句將在第一個字符上工作。例如,如果您的參數是:2 + 3,則會評估2。由於2既不是+也不是 - 因爲在switch語句中沒有缺省情況,所以不會看到任何輸出。

您的方法不會返回一個數字。見mabbas更多細節