Main.java与简单的静态双重计算一起使用

时间:2012-03-01 19:30:49

标签: java static double

我正在完成一项学校任务,现在我有点困惑。有人可以指出问题所以我可以从中吸取教训。所以这就是:

这是一个从英里到公里和副verca的简单计算。这就是我所拥有的:

public class Kilometer {

    static double mijlToKilometer(double mijl) {
        double kilometer = 1.609 * mijl;
        return kilometer;
    }

    static double kilometerToMijl(double kilometer) {
        double mijl = 0.622 * kilometer;
        return mijl;
    }
}

这是主要的:

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner input = new Scanner(System.in);

        System.out.println("mijl?");
        double mijl = input.nextDouble();
        Kilometer eenBerekening = new Kilometer();
        eenBerekening.mijl = mijl;
        eenBerekening.mijlToKilometer();

        System.out.println("kilometer?");
        double kilometer = input.nextDouble();
        eenBerekening.kilometer = kilometer;
        eenBerekening.kilometerToMijl();
    }

}

我有“import java.util.Scanner;”这不是那样的。 Netbeans在这些方面提出了一个问题:

    Kilometer eenBerekening = new Kilometer();
    eenBerekening.mijl = mijl;
    eenBerekening.mijlToKilometer();

帮助任何人? Thx提前!!

更新 所以这就是我现在所拥有的,而且它正在发挥作用。感谢所有人的帮助!!!

Kilometer.java

public class Kilometer {

    static double mijlToKilometer(double mijl) {
        double kilometer = 1.609 * mijl;
        System.out.println(kilometer);
        return kilometer;
    }

    static double kilometerToMijl(double kilometer) {
        double mijl = 0.622 * kilometer;
        System.out.println(mijl);
        return mijl;
    }
}

Main.java

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("mijl?");
        double mijl = input.nextDouble();
        Kilometer.mijlToKilometer(mijl);

        System.out.println("kilometer?");
        double kilometer = input.nextDouble();
        Kilometer.kilometerToMijl(kilometer); 
    }

}

8 个答案:

答案 0 :(得分:2)

您的班级Kilometer没有名为mijl的字段,这就是编译器抱怨的原因。

答案 1 :(得分:1)

您的mijl课程中没有Kilometer属性。正如其他人所指出的那样,Kilometer方法是静态的。只需从类中调用它,您就不需要实例:

Kilometer.mijlToKilometer(mijl);

答案 2 :(得分:1)

   Kilometer eenBerekening = new Kilometer();
   eenBerekening.mijl = mijl;

您正在创建类Kilometer的实例,并分配给该类中未定义的属性。

   eenBerekening.kilometerToMijl();

在这里,您在实例上调用static方法,并且无法传递所需的参数。

答案 3 :(得分:1)

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner input = new Scanner(System.in);

        System.out.println("mijl?");
        double mijl = input.nextDouble();
        Kilometer eenBerekening = new Kilometer();

        Kilometer.mijlToKilometer(mijl); //calling static class and passing parameter to function

        System.out.println("kilometer?");
        double kilometer = input.nextDouble();

        Kilometer.kilometerToMijl(kilometer); // same as before but other function
    }

}

答案 4 :(得分:0)

当您实际使用实例调用它们时,您正在使用关键字static作为方法声明。

另外,您尝试设置

eenBerekening.mijl = mijl;

虽然您的课程中没有课程参数mijl。只需使用

调用您的方法即可
eenBerekening.mijlToKilometer(mijl);

答案 5 :(得分:0)

你有静态方法。这些方法属于Class-Level而不是实例级,因此您必须调用:

Kilometer.mijlToKilometer()

答案 6 :(得分:0)

由于您已将这些方法声明为静态,因此您不需要Kilometer实例来使用它们,您可以这样做:

Kilometer.mijlToKilometer(12.02)

答案 7 :(得分:0)

  1. 方法为static,因此您无需new
  2. mijl课程中没有Kilometer字段,公开或其他字段。
  3. static上的Kilometer方法需要参数,但您的代码不会传递参数。
  4. 所以:

    double mijl = input.nextDouble();
    double kilometer = Kilometer.mijlToKilometer(mijl);