问题
这个问题已经在这里有了答案:
import java.util.Scanner;
public class Initials {
Scanner getin = new Scanner (System.in);
public static void main(String[] args) {
String Name;
System.out.println("Enter your name's Initials::");
Name=getin.nexlinet();
}
}
错误:不能从静态上下文引用非静态变量?
java
回答
首先, Scanner对象没有名为nexlinet的方法,我想您想使用nextLine() 。
关于错误,您无法从static方法(在这种情况下,该方法为main )引用non-static变量。
为什么? 因为即使没有创建该类的实例,也可以使用static变量。
怎么解决呢?
您可以将变量getin声明为static :static Scanner getin = new Scanner(System.in);
或者,您可以创建该类的实例并访问实例字段getin :Initials some_name = new Initials(); // ... name = t.getin.nextLine();
笔记:
尝试遵循Java命名约定。 对方法/变量使用'mixedCase' ,对类/接口使用'CamelCase' 。
我建议您阅读有关访问修饰符的信息。 为什么? 看第二种解决方法。 Initials类应为实例字段getin提供一个getter / setter方法,因此您没有对此的完全访问权限。 另外,将实例字段声明为private (并使用getters / setters )也是一种好习惯。
回答
尝试这个:
// ur code
public static void main(String[] args) {
Scanner getin = new Scanner (System.in); //
Name=getin.nextLine(); //
// ur code
回答
您必须在main方法内部创建扫描仪类对象。
因为外部声明的非静态变量无法访问静态方法。
public static void main(String[] args)
{
Scanner getin = new Scanner (System.in);
String Name;
System.out.println("Enter your name's Initials::");
Name=getin.nextLine();
}
回答
您不了解静态和非静态变量或方法。
1)可以在任何位置访问静态变量或方法,无论它是静态方法还是非静态方法。 2)非静态方法或变量不能在静态方法中访问。
所以修改后的代码应该是:
import java.util.Scanner;
public class Initials {
public static void main(String[] args) {
String Name;
Scanner getin = new Scanner (System.in);
System.out.println("Enter your name's Initials::");
Name=getin.nexLine();
}
}
否则,将Scanner修改为static Scanner getin = new Scanner (System.in);
回答
静态方法:无法访问非静态变量。 无法调用非静态方法。 无法使用“ this”关键字。 无法使用“超级”关键字。 无法覆盖静态方法。 因此您不能在main方法内部访问非静态对象,因为它是静态方法。
回答
import java.util.Scanner;
public class Initials
{
public static void main(String[] args)
{
Scanner getin = new Scanner (System.in);
String Name;
System.out.println("Enter your name's Initials::");
Name=getin.nexlinet();
}
}
回答
导入java.util.Scanner;
公共课程缩写
public static void main(String[] args) {
Scanner getin = new Scanner (System.in);
String Name;
System.out.println("Enter your name's Initials::");
Name=getin.next();
}
}