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

如何使变量与多个方法一起工作?

端木令雪
2023-03-14

方法grossPay()fed税收()由于某种原因没有被计算。

  1. 如何返回grossPay()结果,grossPay

谢谢你!

import java.util.Scanner;

public class WorkPay {

public static void main(String args[]) {
    WorkPay wagecalc = new WorkPay();   // 1. Instantiate the object WorkPay
    WorkPay input = new WorkPay();      // 2. Reference the method to prompt for inputs
    input.prompt4data();
    input.display();                    // 3. Reference the method to display the results
}

public void prompt4data() {
    Scanner console = new Scanner(System.in);
    System.out.println("How many hours have you worked?");
    hours = console.nextDouble();
    System.out.println("What is your wage rate?");
    wage_rate = console.nextDouble();
    System.out.println("How many dependents do you have?");
    dependents = console.nextInt();
}

// private instance variables
    private double hours;
    private double wage_rate;
    private int dependents;
    private double grosspay;
    private double totalpay;
    private double tax;
    private double dependenttax;
    private double taxtotal;

public double grossPay() {
    double total1 = 0;
    double total2 = 0;
    double total3 = 0;
    if (hours <= 40) {
        total1 = wage_rate * hours;
        grosspay = total1;
    }
    else if (hours > 40 && hours <= 60) {
        total2 = total1 + (wage_rate * 1.5) * (hours - 40);
        grosspay = total2;
    }
    else {
        total3 = total2 + (wage_rate * 2) * (hours - 60); 
        grosspay = total3;
    }
    return grosspay;
}

public void fedTax() {
    tax = (0.10 * grosspay);
    dependenttax = (25 * dependents);
    taxtotal = tax + dependenttax;
    if (tax < 0)
        System.out.println("Taxt withheld can't be less than 0.");
}

public void display() {
    System.out.println("The hours worked is: " + hours);
    System.out.println("The hoursly rate is: " + wage_rate);
    System.out.println("The number of dependents is: " + dependents);
    System.out.println("The gross income is: " + grosspay);
    System.out.println("The federal tax withheld is: " + taxtotal);
    System.out.println("The take home pay is: " + totalpay);
}
}

共有3个答案

王成化
2023-03-14

由于您使用实例变量进行所有计算,因此不必从方法返回。你只需要不断更新变量,并在最后打印它们。

在这里,我对你的程序做了一些修改。

import java.util.Scanner;

    public class WorkPay {

        // private instance variables
        private double hours;
        private double wage_rate;
        private int dependents;
        private double grosspay;
        private double totalpay;
        private double tax;
        private double dependenttax;
        private double taxtotal;

        public static void main(String args[]) {
            WorkPay input = new WorkPay(); // 2. Reference the method to prompt for
                                           // inputs
            input.prompt4data();
            input.grossPay();
            input.fedTax();
            input.display(); // 3. Reference the method to display the results
        }

        public void prompt4data() {
            Scanner console = new Scanner(System.in);
            System.out.println("How many hours have you worked?");
            hours = console.nextDouble();
            System.out.println("What is your wage rate?");
            wage_rate = console.nextDouble();
            System.out.println("How many dependents do you have?");
            dependents = console.nextInt();
        }

        public void grossPay() {
            double total1 = 0;
            double total2 = 0;
            double total3 = 0;
            if (hours <= 40) {
                total1 = wage_rate * hours;
                grosspay = total1;
            } else if (hours > 40 && hours <= 60) {
                total2 = total1 + (wage_rate * 1.5) * (hours - 40);
                grosspay = total2;
            } else {
                total3 = total2 + (wage_rate * 2) * (hours - 60);
                grosspay = total3;
            }
        }

        public void fedTax() {
            tax = (0.10 * grosspay);
            dependenttax = (25 * dependents);
            taxtotal = tax + dependenttax;
            if (tax < 0)
                System.out.println("Taxt withheld can't be less than 0.");
        }

        public void display() {
            System.out.println("The hours worked is: " + hours);
            System.out.println("The hoursly rate is: " + wage_rate);
            System.out.println("The number of dependents is: " + dependents);
            System.out.println("The gross income is: " + grosspay);
            System.out.println("The federal tax withheld is: " + taxtotal);
            System.out.println("The take home pay is: " + totalpay);
        }
    }
曾鸿振
2023-03-14

让我们从你的田地开始。你只需要一小部分。

// private instance variables
private double hours;
private double wage_rate;
private int dependents;

这三个字段(并且wage_rate应该是wage速率,以符合惯例)是您唯一需要的。所有其他值都应该被计算。

接下来,由于您正在计算的值彼此依赖(使用DouleTime包括基本速率和1.5倍速率),您应该提前计算这些值。这不应该有任何风险,因为例如,如果你只有51个小时的工作,你不在乎DouleTime是否不准确。

public double grossPay() {
    double baseRate = wage_rate * hours;
    double timeAndAHalf = baseRate + (wage_rate * 1.5) * (hours - 40);
    double doubleTime = timeAndAHalf + (wage_rate * 2) * (hours - 60);
    if (hours <= 40) {
        return baseRate;
    } else if (hours > 40 && hours <= 60) {
        return timeAndAHalf;
    } else {
       return doubleTime;
    }
    return grosspay;
}

第三,让我们仔细看看fed税方法。好消息是,您不需要在其他任何地方使用依赖税(实际上应该是依赖税)或,所以您需要做的就是显式返回您计算的值。不要忘记实际调用grossPay方法,因为您需要它作为计算的一部分。

public double fedTax() {
    tax = (0.10 * grossPay());
    dependenttax = (25 * dependents);
    return tax + dependenttax;
}

最后,剩下的就是打印输入字段最后一部分的值。。。

// Method call to...something that does things with gross pay
System.out.println("The gross income is: " + _____);
// Method call to...something that does things with tax...
System.out.println("The federal tax withheld is: " + _____);
// What's the net pay again?
System.out.println("The take home pay is: " + ____);

...但我留给读者的是一个明确的练习。

黄宏毅
2023-03-14

要么调用它们,要么使用getters(更好),getters,又名accessors,是一种命名约定,其中方法的前缀是get(另请参见Java-使用Accessor和Mutator方法):

public double getGrossPay() {
    double grosspay = 0; //local now (remove field)
    double total1 = 0;
    double total2 = 0;
    double total3 = 0;
    if (hours <= 40) {
        total1 = wage_rate * hours;
        grosspay = total1;
    }
    else if (hours > 40 && hours <= 60) {
        total2 = total1 + (wage_rate * 1.5) * (hours - 40);
        grosspay = total2;
    }
    else {
        total3 = total2 + (wage_rate * 2) * (hours - 60); 
        grosspay = total3;
    }
    return grosspay;
}

public void display() {
    ...
    System.out.println("The gross income is: " + getGrossPay());
    ...
}

这样,总薪酬将永远是正确的,没有什么领域可以过时。

您在getGrossPay中还有一些其他问题,各种小计并不是全部计算出来的,但我会让您计算出来,或者您可以看看这对您是否有意义:

public double getGrossPay() {
    double grosspay = wage_rate * hours;
    if (hours > 40) grosspay += wage_rate * (hours - 40) * 0.5;
    if (hours > 60) grosspay += wage_rate * (hours - 60) * 0.5;
    return grosspay;
}
 类似资料:
  • 我是Kafka的新手,我正在构建一个使用Twitter API作为数据源的入门项目。我已经创建了一个生产者,它可以查询Twitter API,并使用字符串序列化器将数据发送到我的kafka主题,以获得键和值。我的Kafka Stream应用程序读取这些数据并进行字数统计,但也按Tweet的日期分组。这一部分是通过一个名为wordCounts的KTable来完成的,以利用它的upsert功能。这个K

  • 我的pom。xml如下所示 我已经尝试了三天,使用REdhat入门指南让这个简单的示例代码与Infinispan一起使用,并下载了快速入门zip来运行它,但仍然不起作用!我一直收到Spring JMS的错误“无法连接到foo: 11222”或“池未打开”,然后是关于混合Uber和Jars版本的警告。我开始使用ehcache,这很难实现,因为只有有限的简单示例展示了如何从rest调用等中存储、检索和

  • 我最近安装了privacy vpn,结果发现启用的openvpn会破坏Docker。 当我尝试运行时,我得到以下错误 禁用vpn可以解决这个问题(不过,我宁愿不禁用它)。有没有办法使这两者和平共处?我使用debian jessie,我的openvpn有以下版本字符串 null

  • 我正在处理一个Flask项目,我正在使用Flask SQLAlchemy。 我需要处理多个已经存在的数据库。 我创建了“app”对象和SQLAlchemy对象: 在配置中,我设置了默认连接和附加绑定: 然后,我使用声明性系统创建了表模型,并在需要时设置参数以指示表位于哪个数据库中。 例如: 通过这种方式,当我在正确的数据库上进行查询时,一切都正常工作。 阅读SQLAlchemy文档和Flask S

  • 我需要了解如何将方法返回到方法中,以打印出计算机的随机选择。 打印语句之后的最后一个方法不完整;我只是被这部分卡住了。

  • 问题内容: 考虑以下代码段: 显然不知道可以将a馈送到需要的方法(实际上,它的文档说它在寻找 具有指定名称和形式参数完全相同的方法 )。 是否有一种直接的方法来像上面那样以反射方式查找方法,但是要考虑多态性,以便上述反射示例在查询参数时可以找到该方法? 问题答案: 该反射教程 建议使用样本进行查找