gpt4 book ai didi

java - Java中的方法错误

转载 作者:搜寻专家 更新时间:2023-11-01 02:09:10 25 4
gpt4 key购买 nike

这可能很简单,也可能相当困难……我对这两种方式都一无所知。这是我的代码:

package looping;

import java.util.Scanner;

public class PayrollMethods2 {

public static void main(String[] args) {

int hours = 0;
double wr = 0;
double pay;

getData(hours, wr);

pay = calculatePay(hours, wr);

System.out.println(pay);
// TODO Auto-generated method stub

}


public static void getData(Integer hours, Double wr)
{
Scanner kb = new Scanner(System.in);


System.out.print("Please enter your wage rate ");
wr = kb.nextDouble();

System.out.print("Please enter your hours work ");
hours = kb.nextInt();
}



public static double calculatePay(int hours, double wr)
{
if(hours <= 40)
return hours * wr;
else
return (40 * wr) + ((hours - 40) * (1.5* wr));
}

}

我想返回方法“getData()”,这样当我在键盘上输入小时和 wr 时,它会返回总数。但是,无论我按什么,它总共返回 0.0。我知道这与我为变量分配 0 值以及该方法是“无效”有关。但我不知道如何修改 getData() 方法以使其返回正确的值。

最佳答案

您面临的问题是因为变量 hours 和 wr 正在按值传递给 getData(),所以 getData 函数有自己的变量 hours 和 wr 副本。

主要:(初始化)

Variable    Value    Memory Address
hours 0 44444
wr 0.0 55555

获取数据: hours & wr 与 main 不同,所以他们有不同的地址

Variable    Value    Memory Address
hours 0 66666
wr 0.0 77777

用户现在输入值:小时 - 10,wr - 20

Variable    Value    Memory Address
hours 10 66666
wr 20.0 77777

ma​​in : 当控制权回到 main 时,hours & wr 的值仍然为 0

Variable    Value    Memory Address
hours 0 44444
wr 0.0 55555

解决方案:

这个问题可以通过将工资信息封装到一个对象中然后传递该对象来解决(Java中对象通过引用传递):

class Salary
{
int hours;
double wr;
}

现在在 getData 中,您可以根据用户输入信息创建数据 Salary 对象,并将该对象传递给 calculatePay

public static Salary getData()
{
Scanner kb = new Scanner(System.in);
Salary sal = new Salary();

System.out.print("Please enter your wage rate ");
sal.wr = kb.nextDouble();

System.out.print("Please enter your hours work ");
sal.hours = kb.nextInt();

return sal;
}

public static double calculatePay(Salary sal)
{
}

关于java - Java中的方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22026020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com