Java 命令行参数计算

Java 命令行参数计算,java,command-line-arguments,Java,Command Line Arguments,我需要编写一个使用命令行参数的程序。我是java的初学者。程序需要三个命令行参数,请参见以下内容: 第一个数字 操作(+、-、*、/) 第二个数字 如果发生错误,则显示一条消息。如果没有,请显示答案。(“这个答案是”) 例:5+3 以下是我所做的: import java.util.Arrays; public class math { public static void main (String args[]) { int firstNumb

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

  • 第一个数字
  • 操作(+、-、*、/)
  • 第二个数字
  • 如果发生错误,则显示一条消息。如果没有,请显示答案。(“这个答案是”)

    例: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开始。 例:

    您应该将所有索引引用递减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]);
    
    数组索引从0开始。 例:

    您应该将所有索引引用递减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]);
    
    数组索引从0开始。 例:

    您应该将所有索引引用递减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]);
    
    数组索引从0开始。 例:

    您应该将所有索引引用递减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和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,因此用于设置命令行参数

    首先,您需要控制args是否有3个元素。数组也是零索引的,因此需要使用args[0]、args和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,因此用于设置命令行参数

    首先,您需要控制args是否有3个元素。数组也是零索引的,因此需要使用args[0]、args和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,因此用于设置命令行参数

    首先,您需要控制args是否有3个元素。数组也是零索引的,因此需要使用args[0]、args和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处获得并超出BoundsException,因此很可能没有任何内容作为参数从命令行传递。我不怎么使用cmd,但我假设您在输入三个参数时犯了一些错误。

    正如Eric所说,您需要从0开始数组

    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);
    
    
        //.... 
    }
    

    但是,由于您说您在索引0处获得并超出BoundsException,因此很可能没有任何内容作为参数从命令行传递。我不怎么使用cmd,但我假设您在输入三个参数时犯了一些错误。

    正如Eric所说,您需要从0开始数组

    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);
    
    
        //.... 
    }
    

    但是,由于您说您在索引0处获得并超出BoundsException,因此很可能没有任何内容作为参数从命令行传递。我不怎么使用cmd,但我假设您在输入三个参数时犯了一些错误。

    正如Eric所说,您需要从0开始数组

    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);
    
    
        //.... 
    }
    


    但是,由于您说您在索引0处获得并超出BoundsException,因此很可能没有任何内容作为参数从命令行传递。我不怎么使用cmd,但我假设您在输入三个参数时犯了一些错误。

    即使我将数组索引固定为0。我运行程序时仍然收到此消息。线程“main”java.lang.ArrayIndexOutOfBoundsException:0 at math.main(math.java:7)java结果:1我已更改为您显示的内容。但是,还是一样的信息。我认为“数组”有问题。当我将数组索引固定为0时,我错过了这一部分。我运行程序时仍然收到此消息。线程“main”java.lang.ArrayIndexOutOfBoundsException:0 at math.main(math.java:7)java结果:1我已更改为您显示的内容。但是,还是一样的信息。我认为“数组”有问题。当我将数组索引固定为0时,我错过了这一部分。我运行程序时仍然收到此消息。线程“main”java.lang.ArrayIndexOutOfBoundsException:0 at math.main(math.java:7)java结果:1我已更改为您显示的内容。但是,还是一样的信息。我认为“数组”有问题。当我将数组索引固定为0时,我错过了这一部分。我运行程序时仍然收到此消息。线程“main”java.lang.ArrayIndexOutOfBoundsException:0 at math.main(math.java:7)java结果:1我已更改为您显示的内容。但是,还是一样的信息。我认为“数组”有问题。我错过了partI所做的,但是当我运行程序时,它只显示“这个程序需要3个参数:firstNumber、secondNumber和operator”。我甚至不能输入任何数字。你在使用IDE吗,eclipse可能是?我在使用NetBean 8来编写程序!我这样做了,但是当我运行程序时,它只显示“这个程序需要3个参数:firstNumber、secondNumber和operator”。我甚至不能输入任何数字。你在使用IDE吗,eclipse可能是?我在使用NetBean 8来编写程序!我这样做了,但是当我运行程序时,它只显示“这个程序需要3个参数:firstNumber、secondNumber和operator”。我甚至不能输入任何数字。你在使用IDE吗,eclipse可能是?我在使用NetBean 8来编写程序!我这样做了,但是当我运行程序时,它只显示“这个程序需要3个参数:firstNumber、secondNumber和operator”。我甚至不能输入任何数字。你在使用IDE吗,eclipse可能是?我在使用NetBean 8来编写程序!
    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);
    
    
        //.... 
    }