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();
}
}
错误:无法从静态上下文引用非静态变量?
答案 0 :(得分:3)
首先,Scanner
个对象没有使用名为nexlinet
的方法,我想你想要nextLine()
。
关于错误,您无法从non-static
方法引用static
变量(在这种情况下,该方法为main
)。
为什么?因为即使没有创建类的实例,也可以使用static
变量。
如何解决?
您可以将变量getin
声明为static
:
static Scanner getin = new Scanner(System.in);
或者您可以创建类的实例并访问实例字段getin
:
Initials some_name = new Initials();
// ...
name = t.getin.nextLine();
备注:强>
'mixedCase'
,对类/接口使用'CamelCase'
。Initials
应为实例字段getin
提供 getter / setter 方法,因此您无法对其进行完全访问。此外,将实例字段声明为private
(并使用 getters / setters )是一种很好的做法。答案 1 :(得分:1)
试试这个:
// ur code
public static void main(String[] args) {
Scanner getin = new Scanner (System.in); // <-- move scanner declaration inside main
Name=getin.nextLine(); // <-- note this change also
// ur code
答案 2 :(得分:0)
你必须在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();
}
答案 3 :(得分:0)
您不了解静态和非静态变量或方法。
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();
}
}
否则将扫描仪修改为static Scanner getin = new Scanner (System.in);
答案 4 :(得分:0)
静态方法: 无法访问非静态变量。 无法调用非静态方法。 不能使用&#34;这个&#34;关键词。 不能使用&#34; super&#34;关键词。 无法覆盖静态方法。 所以你不能访问main方法中的非静态对象,因为它是一个静态方法。
答案 5 :(得分:0)
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();
}
}
答案 6 :(得分:0)
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.next();
}
}