Java |从函数返回错误

Java |从函数返回错误,java,Java,我有这个功能: public static String checkPeace(int y, int x, player p) { if(p instanceof black) { black b = (black)p; for(int i=0 ; i < b.blackPeaces.length ; i++) { if(b.blackPeaces[i] == null)

我有这个功能:

public static String checkPeace(int y, int x, player p) 
{
    if(p instanceof black)
    {
        black b = (black)p;
        for(int i=0 ; i < b.blackPeaces.length ; i++)
        {
            if(b.blackPeaces[i] == null)
                break;  
                if(b.blackPeaces[i].getXaxis() == x && b.blackPeaces[i].getYaxis() == y )
                {

                    return b.blackPeaces[i].Print(b);
                }
    }
        //TODO add else for white 
    }
    return "\u0020";
getXaxis()
函数是pawn类中的一个简单函数:

public int getXaxis() {
    return X;
}
由于某种原因,
b.blackPeaces[i].getXaxis()和
b.blackPeaces[i].getXaxis()函数总是返回0

另一件奇怪的事情是,我在可变窗口(调试)中有两个典当字段(X,Y,Name)

原因可能是什么

编辑1: 以下是定义:典当:

'package ChessGame;

public class pawn extends piece {
    String Name;
    int Y;
    int X;

    public pawn(String Name, int Y, int X)
    {
        super(Name, Y, X);
    }

    @Override
    public void Move(int NewY, int NewX) 
    {
        Y = NewY;
        X = NewX;
    }

    @Override
    public int getYaxis() {
        return Y;
    }

    @Override
    public int getXaxis() {
        return X;
    }

    @Override
    public String Print(player p) {

        if(p instanceof black)
            return "\u265f";
        else
            return "\u2659";

    }

}
' piece : 'package ChessGame;

abstract public class piece
{
    int Y ;
    int X;
    String Name;

    public piece(String Name, int Y, int X)
    {
        this.Name = Name;
        this.X = X;
        this.Y = Y;
    }
    public String Print(player p)
    {
        if(p instanceof black)
            return "";
        else
            return "";

    }


    public void Move(int NewY, int NewX) 
    {
        Y = NewY;
        X = NewX;

    }

    public int getYaxis()
    {
        return Y;
    }
    public int getXaxis()
    {
        return X;
    }
}
'

工件构造函数初始化工件中定义的X和Y字段。但是子类pawn的getter返回在pawn中定义的字段X和Y的值,这些值从未初始化过

子类中不应该有这些字段。他们已经在超类中了


此外,您的代码对于任何Java开发人员都是不可读的,因为您不遵守任何命名约定。变量应以小写字母开头:
x
y
。类应以大写字母开头:
Piece
Pawn

显示
paawn
peace
的定义。(顺便说一句,拼写为“piece”)@immibis(:\thx将更正拼写)我在主要问题中添加了定义谢谢!由于某种原因,我在写这些变量的典当时出错,所以我重新写了它们。顺便说一句,我更改了变量和类名,我需要习惯这些约定。有关于它们的信息吗?再次感谢您,您应该通过查看JDK数千个类中的任何一个类的javadoc来轻松推断约定。但谷歌是你的朋友:谢谢你的帮助,我会全神贯注地“而且,你的代码对任何Java开发人员来说都是不可读的”——如果你不能阅读代码仅仅因为它使用了不寻常的命名约定,那么你就不能很好地思考代码。
'package ChessGame;

public class pawn extends piece {
    String Name;
    int Y;
    int X;

    public pawn(String Name, int Y, int X)
    {
        super(Name, Y, X);
    }

    @Override
    public void Move(int NewY, int NewX) 
    {
        Y = NewY;
        X = NewX;
    }

    @Override
    public int getYaxis() {
        return Y;
    }

    @Override
    public int getXaxis() {
        return X;
    }

    @Override
    public String Print(player p) {

        if(p instanceof black)
            return "\u265f";
        else
            return "\u2659";

    }

}
' piece : 'package ChessGame;

abstract public class piece
{
    int Y ;
    int X;
    String Name;

    public piece(String Name, int Y, int X)
    {
        this.Name = Name;
        this.X = X;
        this.Y = Y;
    }
    public String Print(player p)
    {
        if(p instanceof black)
            return "";
        else
            return "";

    }


    public void Move(int NewY, int NewX) 
    {
        Y = NewY;
        X = NewX;

    }

    public int getYaxis()
    {
        return Y;
    }
    public int getXaxis()
    {
        return X;
    }
}
'