최근 객체 배열을 호출 할 때마다 NullPointerException
을 가져 오는 것에 대한 질문을 게시했습니다. 데이터를 제공하는 기본 메소드와 문제의 메소드 (Team.sortPlayers()
)가 데이터를 수신하는 중 일부 연결이 끊어지는 문제를 추적했습니다.클래스간에 데이터가 제대로 전송되지 않습니다. NullPointerException이 발생합니다.
public class Project3 {
public static void main(String[] args) {
Input3 input = new Input3();
Team teams[] = new Team[input.NUMBER_OF_TEAMS];
Player players[] = new Player[input.NUMBER_OF_PLAYERS];
String playas[] = new String[input.NUMBER_OF_PLAYERS];
String temp;
String name;
for (int i=0 ; i<input.NUMBER_OF_TEAMS ; i++) {
name = input.getNextString();
System.out.println(name);
for (int j=0 ; j<input.NUMBER_OF_PLAYERS ; j++)
{playas[j] = input.getNextString();
System.out.println(playas[j]);}
teams[i] = new Team(name, playas); //THIS LINE SENDS OVER THE DATA TO THE QUESTIONABLE METHOD
teams[i].sortPlayers();
System.out.println(teams[i]);
}
}
}
//------------------------------
//
//------------------------------
class Player {
public String[] name;
public Player(String inputname) {
name = inputname.split(" ");
}
public String[] getName() {
return name;
}
public String getFirstName() {
return name[0];
}
public String getLastName() {
String last = name[1];
return last;
}
}
//-----------------------
//
//-----------------------
class Team {
private String teamname;
public Player players[];
public Player temp;
public Team(String inputname, String plays[]) { //THIS METHOD RECEIVES A NULL FOR 'INPUTNAME' AND WHAT APPEARS TO BE A JIBBERISH (ex: [email protected], maybe a memory address?) FOR 'PLAYS[]'
inputname = teamname;
System.out.println(teamname);
players = new Player [plays.length];
for(int k=0 ; k<plays.length ; k++)
{ System.out.println(inputname);
this.players[k] = new Player(plays[k]);
System.out.println(players[k]);
}
}
public void sortPlayers() {
int n = players.length;
for (int pass=1; pass < n; pass++){
for (int i=0; i < n-pass; i++) {
String playerName = players[i].getLastName();
String nextPlayerName = players[i+1].getLastName();
if(playerName.compareTo(nextPlayerName) > 0)
temp = players[i];
players[i] = players[i+1];
players[i+1] = temp;
}
}
}
}
아무도 내가 여기에서 무슨 일이 일어나는지 파악할 수없는 경우 매우 감사하게 생각합니다. 나는 의견이 두 문제가있는 문을 표시 한, 그리고 모든의 페이스트 빈은 아래에서 찾을 수 있습니다 이 http://pastebin.com/QGALKbP6
스택 추적을 게시하십시오. – Mohayemin