【发布时间】:2013-11-30 20:41:17
【问题描述】:
我已经在同一个项目中完成了这个(几乎)完全相同的数组返回,其中一个类 (PlayerArray) 可以编译,但由于某种原因,当我尝试在我的 (Planet) 类中返回一个数组时它给了我错误“Incompatible Types”但我不明白为什么会这样,我的意思是该方法返回一个数组并且它确实返回了一个数组?如果有人可以解释差异以及为什么一个有效而另一个抱怨“不兼容的类型”,那就太好了。谢谢!这是我的一些代码。
这是我的启动器。
public class Launcher
{
private static Planet myTest;
private static PlanetInfo myPlanetInfo;
private static PlanetInfo[] planetArray;
private static Player[] arr; //NEED THIS FOR arr = myArray.getPlayerArray(); to work..
public static void main(String[] args)
{
Planet myPlanetArray = new Planet();
PlayerArray myArray = new PlayerArray();
myPlanetArray.getPlanetArray();
myArray.getPlayerArray();
planetArray = myPlanetArray.returnCost();/////////////////////THIS IS THE BROKEN LINE
arr = myArray.getPlayerArray(); //holy moses this worked...
System.out.println("player 1's ID: " + arr[0].viewID());
System.out.println("player 1's balance: " + arr[0].viewBalance());
arr[0].playerGo();
}
}
下面的播放器数组有效..
public class PlayerArray
{
Scanner scan = new Scanner(System.in);
private int numbHuman;
private Player[] arr;
private String[] userName;
private int[] userID;
private int startingMoney;
private int startingPosition;
private int b;
public PlayerArray()
{
Scanner scan = new Scanner(System.in);
System.out.println("How many players wish to play? Values of 2 through 8 accepted.");
numbHuman = scan.nextInt();
System.out.println(numbHuman + " players selected.");
while (numbHuman < 2 || numbHuman > 8)
{
System.out.println("Invalid entry, try again.");
numbHuman = scan.nextInt();
}
arr = new Player[numbHuman];
userName = new String[numbHuman];
userID = new int[numbHuman];
startingMoney = 1500;
startingPosition = 0;
b=0;
for(int i = 0; i < arr.length; i++)
{
userID[i] = b;
System.out.println("Player " + (i + 1) + ", Please enter your first name:");
userName[i] = scan.next();
arr[i] = new Player(userName[i],startingMoney,userID[i],startingPosition);
b++;
}
}
public int viewNumbHuman()
{
return numbHuman;
}
public Player[] getPlayerArray()
{
return arr; //WORKS HERE...
}
}
这是无法编译的类...
public class Planet
{
Scanner scan = new Scanner(System.in);
private static Player[] arr;
private static Planet[] planetArray;
private int cost;
private int playerPosition;
public Planet()
{
Planet testPlanet = new Planet();
PlanetInfo[] planetArray;
planetArray = new PlanetInfo[40];
planetArray[1] = new PlanetInfo("Tatooine Mos Eisley",60,1,1,-1,2,0,0);
planetArray[3] = new PlanetInfo("Tatooine Mos Espa",60,3,1,0,-1,0,0);
//MORE of this, not important
planetArray[37] = new PlanetInfo("Coruscant Jedi Temple",350,37,8,-1,35,0,0);
planetArray[39] = new PlanetInfo("Coruscant Senate",400,39,8,-1,50,0,0);
}
public PlanetInfo[] getPlanetArray()
{
return planetArray;
}
public int testCost()
{
return cost;
}
public int returnCost()
{
return planetArray[arr[0].viewPosition()].testCost(); //**** HERE *WAS* THE ISSUE
}
/*
public int what()
{
return planetArray[arr[0].viewPosition()];
}
*/
【问题讨论】:
-
为此,Planet 必须是 PlanetInfo 的子类。
-
我刚学的时候对子类不熟悉,你指的是我的Launcher类的新问题吗?
-
不,这是对您在上面尝试的内容的一般性评论。
标签: java arrays compiler-errors incompatibletypeerror