【问题标题】:How to call a java main function?如何调用java主函数?
【发布时间】:2015-11-14 02:53:47
【问题描述】:
public class Calculator {
    public static void main(String[] args) {
        if (args.length < 3) {
            System.out.println("Usage: java Calculator operand1 operator operand2");
            System.exit(0);
        }
        int result = 0;
        switch (args[1].charAt(0)) {
        case '+':
            result = Integer.parseInt(args[0]) + Integer.parseInt(args[1]);
            break;
        case '-':
            result = Integer.parseInt(args[0]) - Integer.parseInt(args[1]);
            break;
        case '*':
            result = Integer.parseInt(args[0]) * Integer.parseInt(args[1]);
            break;
        case '/':
            result = Integer.parseInt(args[0]) / Integer.parseInt(args[1]);
            break;
        }
        System.out.println(args[0] + ' ' + args[1] + ' ' + args[2] + " = " + result);
    }
}

当我在终端运行Calculator.java 时,我尝试了以下几种方法:

Rasperry:src maggiesmac$ javac Calculator.java
Rasperry:src maggiesmac$ java Calculator 1+2
Usage: java Calculator operand1 operator operand2
Rasperry:src maggiesmac$ java Calculator 1 + 2
Exception in thread "main" java.lang.NumberFormatException: For input string: "+"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:572)
    at java.lang.Integer.parseInt(Integer.java:615)
    at Calculator.main(Calculator.java:15)
Rasperry:src maggiesmac$ java Calculator.main(1,+,2)
-bash: syntax error near unexpected token `('

那么如何调用 Java 的main() 方法呢?我应该如何将参数传递给它?

【问题讨论】:

  • 你认为Integer.parseInt(args[1] 对命令行参数1 + 2 做了什么?您认为异常试图告诉您什么?
  • 你确实调用了主函数。如果你真的阅读输出,你可以看到有一个语法错误。
  • 您的主函数正在被调用,这不是问题。查看错误消息。您正在尝试将某些内容解析为整数,这显然不是整数。
  • 投票关闭为拼写错误,索引错误。

标签: java input main


【解决方案1】:

请更改案例结构中的索引(如@SotiriosDelimanolis 建议的那样)。另外,我们可以使用 String 以防万一:

public class Calculator {
    public static void main(String[] args) {
        if (args.length < 3) {
            System.out.println("Usage: java Calculator operand1 operator operand2");
            System.exit(0);
        }
        int result = 0;
        switch (args[1]) {
        case "+":
            result = Integer.parseInt(args[0]) + Integer.parseInt(args[2]);
            break;
        case "-":
            result = Integer.parseInt(args[0]) - Integer.parseInt(args[2]);
            break;
        case "*":
            result = Integer.parseInt(args[0]) * Integer.parseInt(args[2]);
            break;
        case "/":
            result = Integer.parseInt(args[0]) / Integer.parseInt(args[2]);
            break;
        }
        System.out.println(args[0] + ' ' + args[1] + ' ' + args[2] + " = " + result);
    }
}

【讨论】:

    【解决方案2】:

    你也可以试试下面的代码得到结果

    class Calculator {
        public static void main(String[] args) {
            if (args.length < 3) {
                System.out.println("Usage: java Calculator operand1 operator operand2");
                System.exit(0);
            }
            int result = 0;
        char op = args[1].charAt(0);
        System.out.println((int)op);
    
        int ope = (int)op;
    
            switch (ope) {
            case 43:
                result = Integer.parseInt(args[0]) + Integer.parseInt(args[2]);
                break;
            case 45:
                result = Integer.parseInt(args[0]) - Integer.parseInt(args[2]);
                break;
            case 42:
                result = Integer.parseInt(args[0]) * Integer.parseInt(args[2]);
                break;
            case 47:
                result = Integer.parseInt(args[0]) / Integer.parseInt(args[2]);
                break;
            }
    
            System.out.println(args[0] + ' ' + args[1] + ' ' + args[2] + " = " + result);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2019-10-24
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      相关资源
      最近更新 更多