繁体   English   中英

命令行参数计算

[英]Command line arguments calculation

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

  1. 第一个数字
  2. 运算(+,-,*,/)
  3. 第二个数字

如果发生错误,则显示一条消息。 如果没有,请显示答案。 (“这个答案是”)。

例如: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);
        }
    }
}

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

数组索引从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]);

首先,您需要控制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,因此请使用以下教程来设置命令行参数。

就像Eric所说的,您需要从0开始数组。

但是,由于您说的是在索引0处获取和OutOfBoundsException,因此很可能没有任何内容从命令行传递为参数。 我对cmd的使用不多,但是我假设您在输入三个参数时犯了一些错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM