编写一个程序,该程序接受两个数字和一个像 (+,-,*, /) 这样的运算符作为命令行参数,并执行运算符指示的操作 [重复]

Posted

技术标签:

【中文标题】编写一个程序,该程序接受两个数字和一个像 (+,-,*, /) 这样的运算符作为命令行参数,并执行运算符指示的操作 [重复]【英文标题】:Write a program that accepts two numbers and a operator like (+,-,*, /) as command line arguments and perform the operation indicated by operator [duplicate] 【发布时间】:2014-11-22 20:27:14 【问题描述】:

编写一个程序,该程序接受两个数字和一个像 (+,-,*, /) 这样的运算符作为命令行参数,并执行运算符指示的相应操作。如果用户输入任何其他字符,将显示相应的消息。程序的输出应该显示给用户。

我的代码是这样的

public class Practical4


    public static void main(String[] args)
    
        if(args.length==0)
        
        System.out.println("No arguments are passed");
        
        else
        

        int a=Integer.parseInt(args[0]);
        String p=args[1];
        int b=Integer.parseInt(args[2]);

        switch(p)
        
            case "+":
                System.out.println("Addition of "+a+" and "+b+" : "+(a+b));
                break;

            case "-":
                System.out.println("Subtraction of "+a+" and "+b+" : "+(a-b));
                break;

            case "*":
                System.out.println("Multiplication of "+a+" and "+b+" : "+(a*b));
                break;

            case "/":
                System.out.println("Division of "+a+" and "+b+" : "+(a/b));
                break;

            case "%":
                System.out.println("Modulo of "+a+" and "+b+" : "+(a%b));
                break;


            default:
                System.out.println("Please Enter '+', '-', '*', '/' & '%' operator only.");
        
        

    


我得到了这个错误

java:17: incompatible types
found   : java.lang.String
required: int
        switch(p)
               ^
1 error

请给出解决方案。谢谢

【问题讨论】:

您使用的是哪个版本的 JDK?这仅在 Java7 之后才允许 ***.com/questions/338206/… 【参考方案1】:

试试这个:因为在switch 的情况下支持java 7 向前string

java 7 之前你应该这样做:

public class Practical4


    public static void main(String[] args)
    
        if(args.length==0)
        
        System.out.println("No arguments are passed");
        
        else
        

        int a=Integer.parseInt(args[0]);
        char p=args[1].charAt(0);
        int b=Integer.parseInt(args[2]);

        switch(p)
        
            case '+':
                System.out.println("Addition of "+a+" and "+b+" : "+(a+b));
                break;

            case '-':
                System.out.println("Subtraction of "+a+" and "+b+" : "+(a-b));
                break;

            case '*':
                System.out.println("Multiplication of "+a+" and "+b+" : "+(a*b));
                break;

            case '/':
                System.out.println("Division of "+a+" and "+b+" : "+(a/b));
                break;

            case '%':
                System.out.println("Modulo of "+a+" and "+b+" : "+(a%b));
                break;


            default:
                System.out.println("Please Enter '+', '-', '*', '/' & '%' operator only.");
        
        

    


【讨论】:

【参考方案2】:

在旧版本的 java 中,您不能在切换字符串时进行迭代。只有从 java 7 开始才允许这样做: https://***.com/a/12521398/1276062 更新您的 java 版本或将 p 转换为 char

【讨论】:

以上是关于编写一个程序,该程序接受两个数字和一个像 (+,-,*, /) 这样的运算符作为命令行参数,并执行运算符指示的操作 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

编写一个Java程序,用于接受一个字符串,并统计某字符在该字符串中出现的次数

用JAVA怎么编写以下两个程序:?!

课程作业01:模仿JavaAppArguments.java示例,编写一个程序,此程序从命令行接受多个数字,求和之后输出结果。

模仿JavaAppArguments.java示例,编写一个程序,由此程序从命令行接受多个数字,求和之后输出结果。

我用 C 语言编写了一个程序,它接受两个输入,x 和 n,并将 x 提高到 n 次方。 10^10 不起作用,发生了啥?

编写伪装成 TTY 的程序