JAVA数据覆盖错误

字母猴子

我的任务是编写一个程序,根据汽车的三个加油量来预测您的年度燃油使用量。我必须使用两个单独的类。这是我的第一堂课,名为AnnualFuelUse。

public class AnnualFuelUse
{
    private static int endMiles, startMiles,fillUp, days,distance;
    private double gallonsUsed, pricePerGallon,MPG,cost;


    AnnualFuelUse(int fu, int d, int sm, int em, double gu, double price)
    {
        fillUp = 0;
        days = d;
        startMiles = sm;
        endMiles = em;
        gallonsUsed = gu;
        pricePerGallon = price;
        distance = 0;
        MPG = 0.0;
        cost = 0.0;
    }

    public void calcDistance ()
    {
        distance = endMiles - startMiles;
    }

    public int getDistance(){
        return distance;
    }

    //calculates miles per gallon
    public void calcMPG()
    {
        MPG =  distance /gallonsUsed;
    }

    public double returnMPG(){
        return MPG;
    }

    public void totalCost(){
        cost= gallonsUsed * pricePerGallon;
    }

    public double getCost(){
        return cost;
    }
    public int returnStart(){
        return startMiles;
    }
    public int returnEnd(){
        return endMiles;
    }
    public int returnDays(){
        return days;
    }
    public double returnGallons(){
        return gallonsUsed;
    }
    public double returnPrice(){
        return pricePerGallon;
    }
}

这是我的第二堂课,标题为AnnualFuelUseTester。(对不起,长名称,但这是必需的)

public class AnnualFuelUseTester
{
public static void main(String[]args)
{

    AnnualFuelUse[]fuel = {new AnnualFuelUse(1,1,45023,45231,10.00,2.95),
                           new AnnualFuelUse(2,4,45231,45480,11.70,2.99),
                           new AnnualFuelUse(3,8,45480,45659,9.30,3.01),
                           new AnnualFuelUse(4,13,45659,45961,14.90,3.01)};                                    
    for (int index = 0; index<fuel.length;index++)
    {
        fuel[index].calcDistance();
        fuel[index].calcMPG();
        fuel[index].totalCost();
    }

    System.out.println(" Fill Up  Days   Start Miles   End Miles   Distance   Gallons Used   MPG   Price   Cost   ");;
    for(int index = 0; index < fuel.length; index++)
    {
        System.out.printf("%5d %6d %9d %12d %12d %10.2f %13.1f %6.2f %6.2f \n",
        index+1,fuel[index].returnDays(),fuel[index].returnStart(),fuel[index].returnEnd(),fuel[index].getDistance(),fuel[index].returnGallons(),fuel[index].returnMPG(),fuel[index].returnPrice(),fuel[index].getCost());
    }

我的问题是,当我运行该程序时,天数,开始英里数,结束英里数和距离列中的所有数字均相同,即最后一次填写的数据。使用的加仑油,MPG,价格,成本,都可以正常工作。因此,在“天数”列中,而不是读取1、4、8、13,而是读取13、13、13、13。

对于解决此问题,我将不胜感激。

艾略特·新鲜

您的字段不得为静态。这意味着每个类一个(不是实例)

private static int endMiles, startMiles,fillUp, days,distance;

应该

private int endMiles, startMiles,fillUp, days,distance;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章