【发布时间】:2014-03-28 08:58:30
【问题描述】:
这可能很简单或相当困难...我不知道这两种方式。 这是我的代码:
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 以及该方法是“void”有关。但我不知道如何修改 getData() 方法以使其返回正确的值。
【问题讨论】:
-
一方面,Java 是按值传递的。
-
对不起JAVA新手,但我将主要方法更改为“getData(Interger,Double);”..我认为这就是你的意思但仍然没有,但应该没有问题在 main 中初始化的赋值变量?
-
@Circuuspeatnutz:这是范围和价值传递的问题。您正在分配参数。如果您使用像 Netbeans 这样的 IDE,它会警告您这一点。由于您没有将值存储在该方法之外的任何位置,因此它们基本上会在
getData中被丢弃。 -
感谢您的帮助!我现在明白通过值了哈哈。
-
@SotiriosDelimanolis 按值传递从未阻止任何人修改函数内部的对象。这里的问题是
Integer对象是不可变的。
标签: java eclipse class methods