命令行参数计算

时间:2014-11-18 21:41:39

标签: java command-line-arguments

我需要编写一个使用命令行参数的程序。我是java的初学者。该程序需要三个命令行参数,请参阅以下内容:

  1. 第一个数字
  2. 操作(+, - ,*,/)
  3. 第二个数字
  4. 如果发生错误,请显示一条消息。如果没有,请显示答案。 ("答案是")。

    Ex:5 + 3

    这就是我所做的:

    import java.util.Arrays;
    
    public class math
    
    {
    
    public static void main (String args[])
    
        {         
            int firstNumber = Integer.parseInt(args[1]);
    
            int secondNumber = Integer.parseInt(args[2]);
    
            char theOperator = args[3].charAt(0);
    
            int result = 0;
    
            System.out.print(args[1] + " " + args[3] + " " + args[2] + " = " );
    
            switch (theOperator)
            {
                case ('+'):
                    result = firstNumber + secondNumber; 
                    break;
                case ('-'):
                    result = firstNumber - secondNumber; 
                    break;
                case ('*'):
                    result = firstNumber * secondNumber; 
                    break;
                case ('/'):
                    result = firstNumber / secondNumber; 
                    break;
                default:
                    System.out.println("Invalid Operator selected");
            }
            if (args.length != 3)
                System.out.println("Error, Please try again!");
            else
            {
                System.out.printf("This answer is ", result);
            }
        }
    }
    

    我不知道自己做错了什么。该程序无法运行。有人可以帮帮我吗?请!

3 个答案:

答案 0 :(得分:1)

数组索引从0开始。 例如:

int firstNumber = Integer.parseInt(args[0]); //Correct version

您应该将所有索引引用减少1并修正顺序:

int firstNumber = Integer.parseInt(args[0]);
char theOperator = args[1].charAt(0); //Wrong order here asusming its comming in as 1 + 2. Also charAt should be 0 indexed as well.
int secondNumber = Integer.parseInt(args[2]);

答案 1 :(得分:1)

首先,你需要控制args是否有3个元素。数组也是零索引的,因此你需要使用args [0],args 1和args [2]来使用参数。

public static void main (String args[]) {   
    if (args.length != 3) {
        System.out.println("This program needs 3 arguments: firstNumber, secondNumber and operator");
        return;
    } 
    int firstNumber = Integer.parseInt(args[0]);
    int secondNumber = Integer.parseInt(args[1]);
    char theOperator = args[2].charAt(0);


    //.... 
}

当您从IDE运行时,还需要提供命令行参数。 你的是netbeans因此使用following tutorial来设置命令行参数。

答案 2 :(得分:1)

就像Eric说的那样,你需要在0开始数组。

但是,因为你说你在索引0处获得了OutOfBoundsException,所以很可能没有任何东西作为参数从命令行传递。我没有使用cmd,但我认为你在输入三个参数时犯了一些错误。