gpt4 book ai didi

java - 无法对非静态字段进行静态引用

转载 作者:行者123 更新时间:2023-12-02 00:25:48 25 4
gpt4 key购买 nike

我用 Java 编写了第一个代码,该代码打印一个围绕作为类参数输入的单词的框架。我已经声明了公共(public)变量“word”并将其分配给参数,也命名为“word”。我相信名为“print”的方法没有问题,它完成了大部分工作。但是,调用“print”的 main 方法不起作用,表示它无法对非静态字段“word”进行静态引用。

我还没有完全理解 static 和 void 的概念,但是我见过的所有示例都使用 static 和 void 作为方法,尤其是 main 方法。我尝试从 main 方法中删除静态,当我这样做时,错误在运行之前消失,但当我运行它时又重新出现在控制台中,说明 main 绝对必须是静态的。

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 方法)是合理的。我只是不明白如何让一切顺利进行。我只是想最终将 Show.java 编译为 Show.class 并能够执行 java Show mammoth,它将打印出被框架包围的“mammoth”。我究竟做错了什么?我知道这与其中一个或两个方法中的 static 和 void 有关,但我似乎尝试了所有组合都无济于事。

最佳答案

非静态变量不能从静态方法引用,您需要 Show 类的对象才能访问 main.c 中的“word”实例变量。如果您不确定对象是什么或如何创建对象,请暂时删除构造函数(public Show(String word) 方法)并将“word”定义为静态(public static String word;),您的代码将起作用,欢迎来到面向对象编程的世界,您有很多东西可以阅读。

此外,这绝对是重复的。 Non-static variable cannot be referenced from a static context

关于java - 无法对非静态字段进行静态引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58052220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com