Java 尽管扫描器分配了不同的数字,变量始终等于0

Java 尽管扫描器分配了不同的数字,变量始终等于0,java,Java,无论出于何种原因,我的变量“hours”仅作为0存在。当我输入96作为距离,1作为小时,43作为分钟时,我的答案是133.9英里/小时。应该是55.9223。我很抱歉问了一个我确信是显而易见的问题,但我学习java还很早 import java.util.Scanner; import static java.lang.System.*; import static java.lang.Math.*; public class mph { private double distance, ho

无论出于何种原因,我的变量“hours”仅作为0存在。当我输入96作为距离,1作为小时,43作为分钟时,我的答案是133.9英里/小时。应该是55.9223。我很抱歉问了一个我确信是显而易见的问题,但我学习java还很早

import java.util.Scanner;
import static java.lang.System.*;
import static java.lang.Math.*;

public class mph
{
private double distance, hours, minutes;
private double mph;

public mph()
{
    setNums(0,0,0);
    mph=0.0;
}

public mph(double dist, double hrs, double mins)
{

    distance=dist;
    hours=hours;
    minutes=mins;
}

public void setNums(double dist, double hrs, double mins)
{
    dist=distance;
    hrs=hours;
    mins=minutes;



}

public void calcMPH()
{
    hours=minutes/60; //hours is not being input, it counts as zero regardless of what's entered
    mph=distance/hours;

}

public void print()
{
     System.out.print((int)distance+" miles in "+(int)hours+" hours and "+(int)minutes+" minutes = "+mph+" mph.\n");

}
}

-------------------单独文件----------------

如果我搞砸了正确的格式,我很抱歉,这是我在网站上的第一篇帖子。
编辑:天哪,我是个白痴

您正在将变量
hours
分配给自身,而不是参数
hrs
。改变

hours=hours;

这就是您的尝试的惯用版本: 产出:
this.hours=hrs
将是最好的建议您应该始终在实例变量引用前面加上关键字
this
,这样您就不会有像这样的简单打字错误了。这有很多错误,除了Java入门教程之外,很难知道从哪里开始。
hours=hours;
hours=hrs;
import java.util.Scanner;

public class Q33636764
{
    private static int getData(final Scanner scanner, final String message)
    {
        System.out.print(message);
        if (scanner.hasNextInt()) { return scanner.nextInt(); }
        else
        {
            System.out.println("Please enter an Integer!");
            return getData(scanner, message);
        }
    }

    public static void main(final String[] args)
    {
        final Scanner keyboard = new Scanner(System.in);

        final int dist = getData(keyboard, "Enter the distance : ");
        final int hrs = getData(keyboard, "Enter the hours : ");
        final int mins = getData(keyboard, "Enter the minutes : ");

        final Mph mph = new Mph(dist, hrs, mins);
        System.out.format("%d miles in %d hours and %d minutes %.2f mph.", dist, hrs, mins, mph.calculate());
        System.out.println();
    }

    public static class Mph
    {
        private final double distance;
        private final double hours;
        private final double minutes;

        public Mph(final double distance, final double hours, final double minutes)
        {
            this.distance = distance;
            this.hours = hours;
            this.minutes = minutes;
        }

        public double calculate()
        {
            return this.distance / this.hours + this.minutes / 60;
        }
    }
}
Enter the distance : 100
Enter the hours : 1
Enter the minutes : 0
100 miles in 1 hours and 0 minutes 100.00 mph.