【问题标题】:How to make a static reference to a non-static method in Java? [duplicate]如何在 Java 中对非静态方法进行静态引用? [复制]
【发布时间】:2016-04-04 06:46:13
【问题描述】:

对于分配,我必须创建一个可以接受分数的类,但是每当我尝试引用程序中的方法时,我都会收到此错误:“无法对非静态方法进行静态引用”。这是我的程序的一部分:

public class Fraction {

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

    System.out.println("What is your numerator?");
    long num = keyboard.nextInt();
    System.out.println("What is your denominator?");
    long denom = keyboard.nextInt();
    System.out.println("Your current fraction is: " + toString());

    keyboard.close(); }

  private long numerator;
  private long denominator;

  public Fraction() {  //constructs fraction 0/1
    numerator = 0;
    denominator = 1; }

  public Fraction(long num){  //constructs fraction n/1
    numerator = num;
    denominator = 1; }

  public Fraction(long num, long denom){  //constructs fraction n/d 
    numerator = num;
    if (denom == 0){  //make sure denom isn't 0
      throw new ArithmeticException(); }
    else{
      denominator = denom; }
    setSign(); } 

  public void add(Fraction fraction){  //addition
    if(fraction.denominator == this.denominator){
     this.numerator += fraction.numerator; }
    else{
      this.numerator *= fraction.denominator;
      this.denominator *= fraction.denominator;
      long temp = fraction.numerator * this.denominator;
      this.numerator += temp; } }   

  public String toString(){  //returns fraction as string
    return (numerator + "/" + denominator); }

  }

如何从 main 方法访问这些方法?另外,我该如何调用加法之类的方法(代码会是什么样子)?

非常感谢任何帮助,谢谢!

【问题讨论】:

  • 您希望打印什么代码?

标签: java class methods static


【解决方案1】:

非静态方法意味着它是一个类的方法。换句话说,您需要声明一个新的分数来调用这些方法。例如:

Fraction frac = new Fraction(2);
Fraction toAdd = new Fraction(3);
frac.add(toAdd);

注意如何使用分数的实例调用 add 方法,在本例中为 frac (frac.add)。

静态方法只能使用 Fraction.add 调用,但非静态方法需要您先创建类的实例(使用 new Fraction())。

【讨论】:

  • 你认为你可以更具体一点吗?就像我需要写什么才能得到输出说:“你的分数是 3/4” 使用我的 toString 方法?
  • 是的。首先创建一个新分数: Fraction frac = new Fraction(3, 4);然后调用toString:System.out.println(frac.toString());
【解决方案2】:

您正在调用 toString() 没有实际实例的实例方法。您应该首先创建类Fraction 的对象并为该对象调用toString() 方法。

【讨论】:

    猜你喜欢
    • 2014-11-19
    • 1970-01-01
    • 2013-06-30
    • 2019-05-07
    • 2014-06-08
    • 1970-01-01
    • 2011-06-25
    相关资源
    最近更新 更多