java无法对非静态字段进行静态引用
我已经用Java编写了我的第一个代码,它打印了一个围绕作为类参数输入的单词的框架。我已经声明了公共变量“word”,并将其分配给参数,也称为“word”。我相信名为“print”的方法没有问题,它完成了大部分工作。然而,调用“print”的主要方法不起作用,说它不能对非静态字段“word”进行静态引用
我还没有完全理解static和void的概念,但是我看到的所有示例都使用static和void作为方法,尤其是main方法。我已经尝试从main方法中删除static,当我这样做时,错误在运行之前消失,但在运行它时会在控制台中重新出现,并说main绝对必须是static
public class Show {
public Show(String word) {
this.word = word;
}
public static void main(String[] args) {
print(word);
}
public static void print(String word) {
System.out.print("+");
for(int i = 0; i < word.length(); i++) {
System.out.print("-");
}
System.out.println("+");
System.out.print("|");
System.out.print(word);
System.out.println("|");
System.out.print("+");
for(int i = 0; i < word.length(); i++) {
System.out.print("-");
}
System.out.println("+");
}
public String word;
}
我认为我的代码中的逻辑是合理的,我指的是print方法。我只是不知道如何让每件事都顺利进行。我只想最终完成这个节目。java来展示。类并能够执行java Show mammoth,它将打印由框架包围的“mammoth”。我做错了什么?我知道这和其中一种或两种方法中的static和void有关,但我尝试了所有的组合,但都没用
# 1 楼答案
不能从静态方法引用非静态变量,您需要类Show的对象才能访问main中的“word”实例变量。 如果不确定对象是什么或如何创建对象,请暂时删除构造函数(publicshow(stringword)方法)并将“word”定义为static(publicstaticstringword;),你的代码会工作的,欢迎来到面向对象编程的世界,你有很多东西要读
而且,这绝对是重复的Non-static variable cannot be referenced from a static context