Java中对静态的非静态引用(但我只使用静态)

时间:2014-11-11 16:29:58

标签: java methods static non-static

此代码运行时出现以下错误: 错误:无法对非静态字段c进行静态引用 错误:无法对非静态字段d进行静态引用 总共发生了11次代码:

import java.util.Scanner;
class problemStatement
{
  int c = 0, d = 0;
  public static void main(String [] args)
  {
    Scanner in = new Scanner(System.in);
    System.out.println("Please enters two integers - 0 0 to end program");
    do
    {
      c = in.nextInt();
      d = in.nextInt();
      System.out.print("User input: " + c + " " + d + " " + displayValues);
      if (isFinished(c,d))
      {
        System.out.println("End of Program.");
      }
      else
      {
        displayValues (c,d);
      }
    }while(!isFinished(c,d));
  }
  public static int min ( int a, int b)
  {
    if ( a >=b)
    {
      return b;
    }
    else
    {
      return a;
    }
  }
  public static int max ( int a, int b)
  {
    if ( a >=b)
    {
      return a;
    }
    else
    {
      return b;
    }
  }
  public static boolean isFinished ( int a, int b )
  {
    if (a==0&&b==0)
    {
      return true;
    }
    else
    {
      return false;
    }
  }
    public static void displayValues ( int a, int b )
    {
      int e = min(a,b);
      int f = max(a,b);
      System.out.print("Max value: " + e + " Min value: " + f);
    }
  }

我同意一些代码是多余的,但是,我是新手,这是为了让我可以更多地了解Java。 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

您的变量cd是实例变量(非静态)。要访问它们,您需要具有problemStatement类的实例。因此,要么让他们static,要么创建instance = new problemStatement()并通过instance.cinstance.d访问它们。

在你的情况下,我会做所有事情static

答案 1 :(得分:1)

西蒙是对的。另一种方法是在main中定义c和d。像

这样的东西
  int c = in.nextInt();
  int d = in.nextInt();

这提供了更好的范围。