2013-08-26 56 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更多细节