此代码运行时出现以下错误: 错误:无法对非静态字段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。 任何帮助表示赞赏。
答案 0 :(得分:2)
您的变量c
和d
是实例变量(非静态)。要访问它们,您需要具有problemStatement
类的实例。因此,要么让他们static
,要么创建instance = new problemStatement()
并通过instance.c
和instance.d
访问它们。
在你的情况下,我会做所有事情static
。
答案 1 :(得分:1)
西蒙是对的。另一种方法是在main中定义c和d。像
这样的东西 int c = in.nextInt();
int d = in.nextInt();
这提供了更好的范围。