所以我非常肯定这段代码应该可以运行,但是当我运行它时它会吐出来。
问题发生在:
return planetArray[arr[0].viewPosition()].testCost();
我的代码发布在下面。我已经仔细研究了这个,但看不出它是怎么回事? 目的是获取Player [x]的currentPosition并使用它来检查玩家[x]的行星成本并返回成本。
很抱歉,如果我发布的代码太多/代码不够,则不确定错误的位置。
public class Launcher
{
private static Planet returnCost;
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.getPlanetArray();
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();
System.out.println("You've landed on: " /* + myPlanetArray.returnName()*/ + " it costs: " + myPlanetArray.returnCost());/*arr[0].viewPosition());*/
//^^^this line causes the error
}
}
和...
public class PlanetInfo
{
Scanner scan = new Scanner(System.in);
private static PlanetInfo[] planetArray;
private static Player[] arr;
private String name; //same with this
private int cost; // doesnt need setter or getter methods, it's permanent.
private int position; // same with this
private int group; // same with this
private int owner;
private int rent; // done
private int town;
private int city;
private int sellValue; // same with this
public void setRent()
{
System.out.println("How many towns would you like to add?");
town = scan.nextInt();
if(position != 39 && town == 1) {rent *= 5;}
else if(position == 39 && town == 1){rent = 200;}
if(town == 2) {rent *= 3;}
if(position <= 13 && town == 3) {rent *= 3;}
else if(position > 13 && town == 3) {rent *= 2.5;}
if(position < 20 && town == 4) {rent *= 1.45;}
else if((position > 20 && position < 40) && town == 4) {rent *= 1.3;}
}
public int getRent(){return rent;}
//public void setOwner(){owner = arr[0].viewID();}
//public int getOwner(){return owner;}
//^^^^Will do this in Player class.
public PlanetInfo(String planetName, int planetCost, int boardPosition, int groupColor, int currentOwner, int startRent, int numTown, int numcity)
{
cost = planetCost;
name = planetName;
position = boardPosition;
group = groupColor;
owner = currentOwner;
rent = startRent;
town = numTown;
city = numcity;
sellValue = cost/2;
}
}
最后..
import java.util.Scanner;
import java.util.Random;
public class Planet
{
private static Player[] arr;
private static PlanetInfo[] planetArray;
private String name;
private int cost;
private int playerPosition;
public void Planet()
{
//cost,boardposition,color,currentowner,startingRent,#towns,#city
Planet testPlanet = new Planet();
PlayerArray myArray = new PlayerArray();
PlanetInfo[] planetArray;
myArray.getPlayerArray();
arr = myArray.getPlayerArray();
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);
planetArray[6] = new PlanetInfo("Dagobah",100,6,2,-1,6,0,0);
//MORE OF THIS NOT IMPORTANT SO REMOVED
planetArray[34] = new PlanetInfo("Alderaan",320,34,7,-1,28,0,0);
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 int testCost()
{
return cost;
}
}
public PlanetInfo[] getPlanetArray()
{
return planetArray;
}
public String testName()
{
return name;
}
public int testCost()
{
return cost;
}
public int returnCost() //returns int of cost
{
return planetArray[arr[0].viewPosition()].testCost();
}
}
答案 0 :(得分:-1)
你永远不会展示PlanetArray
课的样子。您很可能没有实例化Player[]
方法中返回的getPlanetArray()
数组。