java:计算器sumtownumbers、subtractownumbers、dividetwnumbers和multiplytwonnumbers测试失败

xpcnnkqh  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(168)

任务描述:在下面的模板中,您有一个简单的计算器,可以对switch语句中的两个数字进行减法、和、除和乘。现在,我们决定升级它来执行更复杂的任务,比如对数函数。为此,单独的方法是更好的解决方案。让我们从分解我们所拥有的开始。
看一下模板,将计算器的操作分解为四种方法:subtractownumbers(long a,long b)表示减法,sumtownumbers(long a,long b)表示加法,dividetwumbers(long a,long b)表示除法,multilytwumbers(long a,long b)表示乘法。每种方法都应打印计算结果。

注意你不能被零除。如果第二个参数为0,则应打印“除以0!”信息。

我试图创建一个计算器,但出现以下错误:
反馈未通过测试(第1次,共6次)。答错了
这是问题陈述中的一个示例测试!
测试输入:1+2正确输出:3
您的代码输出:

import java.util.Scanner;

class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        long num1 = scanner.nextLong();
        String operator = scanner.next();
        long num2 = scanner.nextLong();

        long result = 0;
        switch (operator) {
            case "-":
                result = subtractTwoNumbers(num1, num2);
                break;
            case "+":
                result = sumTwoNumbers(num1, num2);
                break;
            case "/":
                if (num2 == 0) {
                    System.out.println("Division by 0!");
                } else {
                    result = divideTwoNumbers(num1, num2);
                    break;
                }
            case "*":
                result = multiplyTwoNumbers(num1, num2);
                break;
            default:
                break;
        }
        System.out.println(result);
    }

    // Implement your methods here
    // Each method should print the result of calculations.
    //Note that you can't divide by zero.
    // In case your second argument is zero, you should print the "Division by 0!" message.
    public static long subtractTwoNumbers (long a, long b) { return a - b; }
    public static long sumTwoNumbers (long a, long b) {
        return a + b;
    }
    public static long divideTwoNumbers (long a, long b) {
        return a / b;
    }
    public static long multiplyTwoNumbers (long a, long b) {
        return a * b;
    }
}

你能告诉我我做错了什么吗?感谢&br在此处输入图像描述

8ftvxx2r

8ftvxx2r1#

看起来您正在向leetcode.com或codeforces.com之类的自动化系统提交代码
在使用这些站点时,您需要特别关注程序描述和需求,并确保您的代码在需要时准确地输出所需内容。
您在这里发布的代码可以在您的家庭计算机上正常运行并产生正确的结果。基于常见的实践,甚至可以将print语句放在方法之外,在 main .
通常,这种设计是可以接受的。
不幸的是,这不是任务所要求的:
每种方法都应打印计算结果。
这句话非常重要,因为它告诉你如何实现这些方法:
他们应该自己打印结果,而不是返回结果。
这就是为什么测试显示您没有输出-站点使用的测试机制可能不会运行您的测试 main 函数,但直接调用方法,只测试它们。
所以它忽略返回值,只检查方法的输出。
将所有的打印和除法测试移到适当的方法中,使它们完全独立并符合任务要求。

qzlgjiam

qzlgjiam2#

我终于得到了正确的答案:-)

import java.util.Scanner;
class SimpleCalculator {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        long num1 = scanner.nextLong();
        String operator = scanner.next();
        long num2 = scanner.nextLong();

        //long result = 0;
        switch (operator) {
            case "-":
                subtractTwoNumbers(num1, num2);
                break;
            case "+":
                sumTwoNumbers(num1, num2);
                //System.out.println(sumTwoNumbers(num1, num2));
                break;
            case "/":
                divideTwoNumbers(num1, num2);
                 break;
            case "*":
                multiplyTwoNumbers(num1, num2);
                break;
            default:
                break;
        }
        //System.out.println(result);
    }

    // Implement your methods here
    // Each method should print the result of calculations.
    //Note that you can't divide by zero.
    // In case your second argument is zero, you should print the "Division by 0!" message.
    public static void subtractTwoNumbers (long num1, long num2){
        System.out.println(num1 - num2);
    }
    public static void sumTwoNumbers (long num1, long num2){
        System.out.println(num1 + num2);
    }
    public static void divideTwoNumbers (long num1, long num2){
        if (num2 <= 0) {
            System.out.println("Division by 0!");
        } else
        System.out.println(num1 / num2);
    }
    public static void multiplyTwoNumbers (long num1, long num2){
        System.out.println(num1 * num2);
    }
}

谢谢!!

相关问题