所以我是java的新手,我正试图绕过这个.到目前为止,我正在编写一个调用私有方法的公共方法,这两个方法都写在同一个类中.在测试公共方法时,我能够针对对象employeeOne调用public方法,该对象的参数由用户提供.我不确定这里有私有方法调用,但是因为看起来我在类(我认为)上调用它而不是具有已定义属性的对象.
所以这是我在一个名为Employee的类中编写的私有方法:
private static double computeGrossPay()
{
if (hoursWorked <= 40)
{
grossPay = (hoursWorked * payRate);
}
else if (hoursWorked >= 40)
{
grossPay = ((40 * payRate) + ((1.5 * payRate) * (hoursWorked - 40)));
}
return grossPay;
}
Run Code Online (Sandbox Code Playgroud)
我试图想办法在另一个类中调用这个方法,显然因为它是一个私有方法,所以我不能在它编写的类之外的任何地方调用它.所以我写了一个调用的方法来调用私人方法
public double grossPayDisplay()
{
return Employee.computeGrossPay();
}
Run Code Online (Sandbox Code Playgroud)
这是我的问题发挥作用:到目前为止,此代码的工作,但我不是完全清楚为什么它的工作原理.
这是我测试它的方式:
System.out.println(employeeOne.grossPayDisplay());
Run Code Online (Sandbox Code Playgroud)
employeeOne是从Employee类创建的对象,其参数由用户提供,我的问题是:
编译器如何从Employee.computeGrossPay()中的Employee转到employeeOne?
或者重申如何做
return Employee.computeGrossPay()
Run Code Online (Sandbox Code Playgroud)
实际上将属性传递给computeGrossPay()?
所以我在写一些代码时得到一个索引超出范围的异常.我不明白的是,我知道我正在尝试使用的索引元素存在.
这是代码:
我有一个数组列表的构造函数
public StixBoard(int number)
{
stixGame = new ArrayList<Integer>(number);
for (int i = 0; i < number; i++)
{
stixGame.add(i);
}
}
Run Code Online (Sandbox Code Playgroud)
该块生成随机变量1-3
public int computeMove()
{
int numberOfStix = (int) (3.0 * Math.random()) + 1;
return numberOfStix;
}
Run Code Online (Sandbox Code Playgroud)
真的很直接,现在我在这里有一个方法,它接受提供的参数,并尝试从数组列表中删除这些数量的元素.如您所见,参数必须介于1和3之间,且必须小于或等于数组列表的大小.否则,提示用户输入另一个号码
public boolean takeStix(int number)
{
boolean logicVar = false;
placeHolder = stixGame.size();
if ((number >= 1 && number <= 3) && number <= placeHolder)
{
for (int i = 0; i < number; i++)
{
stixGame.remove(i);
logicVar = …
Run Code Online (Sandbox Code Playgroud)