Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';这个类不能正确执行吗?_Java_Class_Instance - Fatal编程技术网

Java 为什么';这个类不能正确执行吗?

Java 为什么';这个类不能正确执行吗?,java,class,instance,Java,Class,Instance,这是我的第一节课,叫世界 public class World { private static char[][] world2D; private int characterRow; private int characterColumn; public World(int width, int height){ world2D = new char[width][height]; characterColumn = 0;

这是我的第一节课,叫世界

public class World {

    private static char[][] world2D;
    private int characterRow;
    private int characterColumn;


    public World(int width, int height){
        world2D = new char[width][height];
        characterColumn = 0;
        characterRow = 0;

        for(int i = 0; i < world2D.length; i++){
            for(int j = 0; j < world2D[i].length; j++){
                world2D[i][j] = '-';
            }
        }

        world2D[characterRow][characterColumn] = 'P';
    }

    public void moveUp(){
        world2D[characterRow][characterColumn] = '-';
        if (characterRow > 0){
            characterRow -= 1;
        }
        world2D[characterRow][characterColumn] = 'P';
    }

    public void moveDown(){
        world2D[characterRow][characterColumn] = '-';
        if (characterRow < world2D.length){
            characterRow += 1;
        }
        world2D[characterRow][characterColumn] = 'P';
    }

    public void moveRight(){
        world2D[characterRow][characterColumn] = '-';
        if (characterColumn < (world2D[characterRow].length - 1)){
            characterColumn += 1;
        }
        world2D[characterRow][characterColumn] = 'P';
    }

    public void moveLeft(){
        world2D[characterRow][characterColumn] = '-';
        if (characterColumn > 0){
            characterColumn -= 1;
        }
        world2D[characterRow][characterColumn] = 'P';
    }

    public static void displayWorld(){
        for(int i = 0; i < world2D.length; i++){
            for(int j = 0; j < world2D[i].length; j++){
                System.out.print(world2D[i][j]);
            }
            System.out.println();
        }       
    }

}
为什么我不需要在世界类的myWorld实例上专门调用displayWorld呢

如果我创建了多个世界实例呢?这不可能是对的

**编辑以获取更多详细信息


我想在世界类myWorld对象的实例上调用一个类方法(即moveUp或moveDown)。但是,我无法将对该对象(myWorld)的引用传递到这些方法中。我希望能够调用其中一个方法,该方法可以更改“P”在二维数组中的位置,并使用我定义的方法将其打印出来,包括displayWorld方法

静态变量,例如private Static char[][]world2D,存在于类中,而不是该类的对象。这意味着可以通过类名而不是实例名来访问它们。由于您正在构造函数中初始化它,因此每次创建新世界时它都会更改,但每个实例的值都相同。看起来您应该使变量world2D成为非静态的(只需删除static关键字),并在函数displayWorld()上执行相同的操作 然后,行

World.displayWorld()可以替换为
myWorld.displayWorld()

请参阅链接以了解有关静态类型的更多信息


如果要显示不同实例的世界,请从
publicstaticvoiddisplayworld()
中删除
static
,然后调用
myWorld.displayWorld()

您好,我不清楚您的问题是什么。您想更详细地说明一下吗?我想在世界类myWorld对象的实例上调用一个类方法(即moveUp或moveDown)。但是,我无法将对该对象(myWorld)的引用传递到这些方法中。我希望能够调用其中一个方法,它可以更改“P”在二维数组中的位置,并使用我定义的方法(包括displayWorld methodTAsk)将其打印出来,无需居高临下。。我问这个问题是因为我是编程新手,不明白为什么它不起作用。如果你不在这里帮助或解释,请不要担心<代码>静态
类型对于新手来说非常混乱。你会掌握窍门的。:)在我的答案中贴了一个链接,你可能想看看。谢谢你,这肯定会让它变得清晰。我正在使用Eclipse,它告诉我将这些值更改为静态值。我想我没有正确引用myWorld的实例。感谢您的帮助:]
import java.util.Scanner;

public class Driver {
    public static void main(String[]args){
        @SuppressWarnings("resource")
        Scanner input = new Scanner(System.in);
        System.out.print("How tall should the world be?: ");
        int height = input.nextInt();
        System.out.print("How wide should the world be?: ");
        int width = input.nextInt();

        World myWorld = new World(width,height);
        World.displayWorld();
    }

}