【问题标题】:Command line arguments calculation命令行参数计算
【发布时间】:2017-11-13 19:05:11
【问题描述】:

我需要编写一个使用命令行参数的程序。我是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);
        }
    }
}

我不知道我做错了什么。程序不运行。任何人都可以帮助我吗?请!

【问题讨论】:

    标签: java command-line-arguments


    【解决方案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]);
    

    【讨论】:

    • 即使我将数组索引固定为 0。运行程序时仍然收到此消息。线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 0 at math.main(math.java:7) Java 结果:1
    • 我改成了你给我看的。但是,仍然是同样的信息。我认为“数组”有问题。我想念那部分
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我这样做了,但是当我运行程序时,它只显示“这个程序需要 3 个参数:firstNumber、secondNumber 和 operator”。我什至不能输入任何数字。
      • 你用的是IDE,eclipse可能是吗?
      • 我正在使用 NetBean 8 编写程序!
      猜你喜欢
      • 1970-01-01
      • 2012-03-06
      • 2019-03-04
      • 2015-07-14
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多