我已经创建了一个工作更改计算器,它在驱动程序类“CoinsCalculateTester”的基础上工作,从另一个恰当命名为“CoinsCalculate”的调用计算和输出方法。这是 2 个类。
CoinsCalculateTester 类
import chn.util.*;
public class CoinsCalculateTester
{
public static void main(String[] args)
{
int change;
ConsoleIO keyboard = new ConsoleIO();
System.out.print("Please enter amount of change => $0.");
change = keyboard.readInt();
CoinsCalculate printOut = new CoinsCalculate(change);
printOut.calculate();
printOut.printChange();
}
}
CoinsCalculate 类
public class CoinsCalculate
{
//Instance variables
private int change;
public int q, d, n, p; //Quarters, Dimes, Nickels, and Pennies, Respectively.
public int c; //Declaring var c for change in constructor
//Constructor
public CoinsCalculate (int change)
{
c = change;
}
public void calculate()
{
change = change * 100;
int q = c / 25;
c = c % 25;
int d = c / 10;
c = c % 10;
int n = c / 5;
c = c % 5;
int p = c / 1;
c = c % 1;
}
public void printChange()
{
System.out.println("Quarter(s): " +q);
System.out.println("Nickel(s): " +d);
System.out.println("Dime(s): " +n);
System.out.println("Penny(s): " +p);
}
}
当运行测试器时,这是输出:
Please enter amount of change => $0.84
Quarter(s): 0
Nickel(s): 0
Dime(s): 0
Penny(s): 0
我认为我遇到的问题是,一旦完成计算方法,变量就会回到它们的初始值,所以当在 printChange
方法中返回它们时,我得到的所有变量都是 0。我知道我可以将 SOP 行放在一个方法中并避免所有这些麻烦,但我希望它们在不同的方法中。所以我的问题是,我该怎么做?
最佳答案
不要在计算方法中重新定义那些变量,否则它们会隐藏那些同名的类级变量:
q = c / 25;
c = c % 25;
d = c / 10;
c = c % 10;
n = c / 5;
c = c % 5;
p = c / 1;
c = c % 1;
关于Java 从一个单独的方法返回一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25881809/