Java中对static的非静态引用(但I';m仅使用static)

Java中对static的非静态引用(但I';m仅使用static),java,methods,static,non-static,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.printl

运行此代码时,我遇到以下错误: 错误:无法对非静态字段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。
非常感谢您的帮助。

您的变量
c
d
都是实例变量(非静态)。为了访问它们,您需要有一个
problemStatement
类的实例。因此,要么将它们设置为
static
,要么创建一个
instance=newproblemstatement()
并通过
instance.c
instance.d
访问它们


在你的情况下,我会使一切
都是静态的

西蒙是正确的。另一种方法是在main中定义c和d。差不多

  int c = in.nextInt();
  int d = in.nextInt();

这提供了更好的范围。

您是否尝试将错误文本放入搜索引擎并读取结果?什么是
c
d
?@SotiriosDelimanolis是的,但我找不到任何与我的特定问题相关的内容,它们都与使用非静态,但我所有的方法都是static@Mr_Wizerman69您所有的方法都可能是静态的,但您调用的变量不是静态的。这是因为
c
d
只能在实例上使用,不能在类上使用。使它们静止,它就会工作。或者执行
s=newproblemstatement()
和访问
s.c
。请允许我也不同意:变量c和d仅在main()中使用,因此它们应该在main()中声明!让它们保持静止有点邪恶…你是对的。代码不是面向对象的,因此在这里使用类变量没有多大意义。使用局部变量是更好的解决方案。谢谢Simon。那么您建议的类型是c=newproblemstation()和d=newproblemstation()?什么是普通变量?你是说类变量吗?请看user1879313的答案。我一定会试试这个,它在这里很有意义,所以我会让你知道它是否有效,谢谢!