【问题标题】:return not working (need to instantiate an object?) - Java返回不工作(需要实例化一个对象?) - Java
【发布时间】:2021-12-22 06:00:06
【问题描述】:

if 语句的内容与我的问题无关,我已尽可能多地删除了与我的问题无关的内容。

我真的很难理解我需要做什么才能让 getNetSalary 方法返回 netSalary 变量的值。

我认为我需要实例化一个对象以使其具有“可返回”的值,但无论我阅读了多少 youtube 视频和其他论坛帖子,我都无法理解它。

package mortgage;

import java.util.Scanner;

public class MortgageDecision {

    public static void main(String[] args) {
        double grossSalary;
        Scanner input = new Scanner(System.in);
        System.out.print("Gross Annual Salary: £");
        grossSalary = input.nextDouble();
    }

    public static double getNetSalary(double grossSalary) {
        
        double netSalary;
        double taxFreeAllowance = 12500;
        double taxFreeDeduction = 0;
        double tax = 0;

        if (grossSalary > 100000) {
            taxFreeDeduction = (grossSalary - 100000) / 2;
        }

        if (taxFreeDeduction > 12500) {
            taxFreeDeduction = 12500;
        }

        taxFreeAllowance = taxFreeAllowance - taxFreeDeduction;

        if (grossSalary <= 50000) {
            tax = (grossSalary - taxFreeAllowance) * 0.2;
        } else if (grossSalary <= 100000) {
            tax = ((grossSalary - 50000) * 0.3)
                    + ((grossSalary - taxFreeAllowance
                    - (grossSalary - 50000)) * 0.2);
        } else if (grossSalary > 100000) {
            tax = ((grossSalary - 100000) * 0.4) + 15000
                    + ((50000 - taxFreeAllowance) * 0.2);
        }

        if (tax < 0) {
            tax = 0;
        }

        netSalary = grossSalary - tax;
         
        return netSalary;
    }

【问题讨论】:

  • 你没有打电话给getNetSalary。这是你要问的问题吗?
  • 这可能是我出错的地方,也是我应该问的。我刚刚在我的主要方法中添加了以下行:netSalary = getNetSalary();仍然没有做我期望/希望的事情
  • “没有按照我的预期做”并不足以解释您的问题。

标签: java object return


【解决方案1】:

您想在 main 方法中调用 getNetSalary 方法,如下所示:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("Gross Annual Salary: £");
    double grossSalary = input.nextDouble();
    System.out.println(String.valueOf(grossSalary);
    double netSalary = getNetSalary(grossSalary);
    System.out.print("Net salary: £");
    System.out.println(String.valueOf(netSalary);
}

还有一些关于 Java 程序结构的提示:

  • 您似乎使用 C/C++ 编程风格,通常在 Java 中您不需要在顶部声明所有使用的变量。
  • 这就是为什么我要内联netSalary 并下移tax 的声明
  • 您在方法中声明了taxFreeAllowance,并且您没有在内部覆盖它。您可能希望将其提取为常量静态字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 2015-07-29
    • 2017-05-05
    相关资源
    最近更新 更多