有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

    而且,这绝对是重复的Non-static variable cannot be referenced from a static context