当前位置: 首页 > 知识库问答 >
问题:

我怎样才能用一种方法来制作这个计算器呢?

越运锋
2023-03-14

我试着做这个计算器,我可以用四种方法,一种是加法,一种是减法,还有.....但我想让它变得尽可能简单。我如何使用一个方法执行4个主要操作,然后在静态main中调用它?

package com.company;

import java.util.Scanner;

public class Main {
    final static String first = "first number: ";
    final static String sec = "second number: ";

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("what do you want to use? (multiply (input *), divide (input /), subtract (input -), addition (input +)");
        String input = scanner.nextLine();
        double answer = calculation(input);                 ----------------------
        System.out.println(answer);
    }
    public static double calculation(double element){       ----------------------
        Scanner scanner = new Scanner(System.in);
        System.out.println(first);
        double firstInput = scanner.nextDouble();
        System.out.println(sec);
        double secInput = scanner.nextDouble();
        return firstInput element secInput;                 ----------------------
    }
}

可以将元素更改为(+-*/)吗?(那部分是我有问题)

共有1个答案

陶裕
2023-03-14

您可能想看看OOP原则,使用继承和多态性,您应该能够在接口中定义一个方法,并且在您的类中实现它,这样您就可以有一个带有execute方法的计算接口,然后用Sum类实现该接口,其中execute方法执行真正的Sum。

public interface Calculation {
    Double execute(Double a, Double b);
}

public class Sum implements Calculation {
    @Override
    public Double execute(Double a, Double b) {
        return a+b;
    }
}

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("what do you want to use? (multiply => *, divide => /, subtract => -, addition => +");
        String input = scanner.nextLine();
        Calculation calculation;
        if (input.equals("+")) calculation = new Sum();
        else calculation = new Sum();// Just initializing calculation to avoid compilation error
        double answer = execute(calculation);
    }

    private static double execute(Calculation calculation){
        Scanner scanner = new Scanner(System.in);
        double firstInput = scanner.nextDouble();
        System.out.println(firstInput);
        double secInput = scanner.nextDouble();
        System.out.println(secInput);
        return calculation.execute(firstInput, secInput);
    }
}
 类似资料:
  • 有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:

  • 我正在尝试获取角色id,但我不知道如何操作,因为它不起作用: 身份验证::用户- 对象(照亮\数据库\雄辩\收集)#843(1) {["项目":受保护]=

  • 我知道还有其他方法可以实现这一点,但我想通过initState()使用Future来使用SharedPreVP获取List。下面说明了我想要实现的目标,但它不能按要求工作,因为Future在完成任务之前立即返回。 这应该如何组织?

  • 我目前正在建设我的网站,我想有一个图标,显示在浏览器选项卡和书签区,并在移动设备上的主屏幕,如果我的用户想。我见过一些关于favicons和.ico的东西,但我见过的网站图标肯定超过16px×16px,我如何为我的网站制作一个图标,大于16px×16px,并实现它?见下面的屏幕截图,即质子邮件的图标不是16px乘16px。 谢谢你抽出时间!

  • 我有“下载正在进行文件”对话框活动。当用户按下“隐藏”按钮时,活动将创建通知和隐藏进度对话框。并且当用户单击到通知时,活动显示进度对话框再次出现在活动中。我如何在按下按钮“后退”时切换活动到后退任务?