尝试在编译器中运行代码时线程"main" java.lang.NullPointer异常



我的代码输出遇到问题(下面列出了单独的文件和所有文件(,我可以在这里执行正确的操作,直到我需要直接执行一个又一个。它吐出了线程中的异常";主";java.lang.NullPointerException错误,以及它在哪些行是不正确的,但是我现在还不知道如何修复它。(这是在Eclipse编译器中完成的(


public class Assignment4
{
public static void main (String[] args)
{
// local variables, can be accessed anywhere from the main method
char input1 = 'Z';
//String inputInfo= "";
String name,  firstName, lastName,  city ;
int years = 0;
String line = new String();
// instantiate a Team object
Team suns = null;
printMenu();
//Create a Scanner object to read user input
Scanner scan = new Scanner(System.in);
do  // will ask for user input
{
System.out.println("What action would you like to perform?");
line = scan.nextLine();
if (line.length() == 1)
{
input1 = line.charAt(0);
input1 = Character.toUpperCase(input1);
// matches one of the case statement
switch (input1)
{
case 'A':   //Add a coach

System.out.print("Please enter the Coach's information:n");
System.out.print("Enter coach's first name:t");
firstName = scan.nextLine();
System.out.print("Enter coach's last name:t");
lastName = scan.nextLine();
System.out.print("Enter coach's years of experience:t");
years = scan.nextInt();
scan.nextLine();
Coach sunsCoach = new Coach(firstName, lastName, years);
System.out.print("nPlease enter the Team's information:");
System.out.print("nEnter teams name:t");
name = scan.nextLine();
System.out.print("Enter Team's city:t");
city = scan.nextLine();
suns = new Team(name, sunsCoach, city);
break;
case 'D':   //Display course
System.out.print(suns.toString());
break;
case 'Q':   //Quit
break;
case '?':   //Display Menu
printMenu();
break;
default:
System.out.print("Unknown actionn");
break;
}
}
else
{
System.out.print("Unknown actionn");
}
} while (input1 != 'Q' || line.length() != 1);
scan.close();
}
/** The method printMenu displays the menu to a user **/
public static void printMenu()
{
System.out.print("ChoicettActionn" +
"------tt------n" +
"AttAdd Coachn" +
"DttDisplay Teamn" +
"QttQuitn" +
"?ttDisplay Helpnn");
}
}

除了这段代码,还有我的两个子类文件,分别是Coach.java和Team.java,如下所示。

public class Coach
{ String firstName, lastName; //constructor 
int years;
{ String numYears;
firstName = lastName = numYears = "?";

}

public Coach(String first, String last, int years) { //Set variables 

firstName = first;
lastName = last; 
int numYears = years;
}


//Accessors 
public String getFirstName()
{return firstName;}
public String getLastName()
{return lastName;} 
public String getYears()
{String numYears = null;
return numYears;}
// Mutators 
public void setFirstName(String theFirstName) 
{firstName = theFirstName;}
public void setLastName(String theLastName) 
{lastName = theLastName;}
public void setYears(int years) 
{int numYears = years;}
public String toString() { 
String output = "nLast Name:t" + lastName + "nFirst Name:t " + firstName;
output += "nYears of Experience:t " + getYears() + "n";
return output;
}
}
public class Team { 
String teamName;
Coach coach; 
String getCity; 
//Constructor   
public Team() { 
teamName = getCity = "?";

}

public Team(String name, Coach coach, String cityName) 
{ teamName = name;

}
//Accessors 
public String getName() {return teamName;}
public Coach getCoach() {return coach;}
public String getCity() {return getCity;} 
//Mutators 
public void setName(String theName) {teamName = theName;}
public void setCity(String someCity) {getCity = someCity;}
public void setCoach(String firstName, String lastName, int years) 
{ coach = new Coach (firstName, lastName, years);
}
public String toString() 
{ String output = "Team's name:t" + teamName + " at " + getCity() + "nCoach Information:";
output += coach.toString();
return output; 
}
}

运行代码并输入直到我希望选择选项D,最终会产生以下特定错误:

线程中的异常";主";java.lang.NullPointerException:无法调用"Coach.toString(("因为";这个。教练;为null在Team.toString(Team.java:30(在Assignment4.main(Assignment4.java:68(

suns=新团队(名称,sunCoach,城市(;

正如我所看到的,您将sunCoach作为参数传递给Team的构造函数,但您没有初始化coach对象。

从更新您的代码

public Team(String name, Coach coach, String cityName) 
{ 
teamName = name;
}

public Team(String name, Coach coach, String cityName) 
{
teamName = name;
coach = coach;
getCity = cityName;
}

这将解决NullPointerException

相关内容

最新更新