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;
}
}
'