亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請問我的為什么拋出這個錯誤?求大神指點Exception in thread "main" java.lang.NullPointerException


package xueshengxuanke;


import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.Scanner;


public class SetTest {


public List<Course> coursesToSelect;

private Scanner console;

public Student student;

public SetTest(){

coursesToSelect = new ArrayList<Course>();

console = new Scanner(System.in);

}

public void testAdd(){

Course cr1 = new Course("1","數據結構");

coursesToSelect.add(cr1);

//Course temp = (Course)coursesToSelect.get(0);//強制轉換將object類型轉換成課程類型

//System.out.println("添加了課程:"+temp.getId()+":"+temp.getName());

Course cr2 = new Course("2","C語言");

coursesToSelect.add(0,cr2);

//Course temp2 = (Course)coursesToSelect.get(0);

//System.out.println("添加了課程:"+temp2.getId()+":"+temp2.getName());

//插入課程的另一種方法

Course[] course = {new Course("3","離散數學"),new Course("4","匯編語言")};

coursesToSelect.addAll(Arrays.asList(course));

//Course temp3 =(Course) coursesToSelect.get(3);

//Course temp4 =(Course) coursesToSelect.get(4);

//System.out.println("添加了兩門課程:"+temp3.getId()+":"+temp3.getName()+";"+temp4.getId()+":"+temp4.getName());

Course[] course2 = {new Course("5","高等數學"),new Course("6","大學英語")};

coursesToSelect.addAll(2,Arrays.asList(course2));

//Course temp5 = (Course) coursesToSelect.get(2);//set 中元素是無序的,所以會出現溢出錯誤

//Course temp6 = (Course) coursesToSelect.get(3);

//System.out.println("添加了兩門課程:"+temp5.getId()+":"+temp5.getName()+";"+temp6.getId()+":"+temp6.getName());


}

//通過 for each方法訪問集合元素

public void testForEach(){

System.out.println("有如下課程帶選(通過for each訪問):");

for(Object obj:coursesToSelect){

Course cr = (Course)obj;

System.out.println("課程:"+cr.getId()+":"+cr.getName());

}

}

// //測試List的contains方法

// public void testListContains(){

// //取得備選課程序列的第0個元素

// Course course = coursesToSelect.get(0);

// //打印輸出coursesToSelected是否包含course對象

// System.out.println("取得課程:"+course.getName());

// System.out.println("備選課程中是否包含課程:"+course.getName()+","+coursesToSelect.contains(course));

// //提示輸入課程名稱

// System.out.println("請輸入課程名稱:");

// String name = console.next();

// //創建一個新的課程對象,ID和名稱,與course對象完全一樣

// Course course2 = new Course();

// course2.setName(name);

// System.out.println("新創建課程:"+course2.getName());

// System.out.println("備選課程中是否包含課程:"+course2.getName()+","+coursesToSelect.contains(course2));

// }

//創建學生對象,并選課

public void createStudentAndSelectCours(){

Student student = new Student("1","小明");

System.out.println("歡迎學生:"+student.getName()+"選課!");

//創建一個Scanner對象,用來接收從鍵盤輸入的課程ID

Scanner console = new Scanner(System.in);

for(int i=0;i<3;i++){

System.out.println("請輸入課程ID");

String courseId = console.next();

for(Course cr:coursesToSelect){

if(cr.getId().equals(courseId)){

student.courses.add(cr);

//set中,添加某個對象,無論添加多少次,最終只會保留一個該對象(的引用),并且,保留的是第一次添加的那一個

//set中還可以添加null對象

student.courses.add(cr);//該處可測試set中的對象是不可重復的,無論加多少次只會存不重復的

}}}}

//測試Set的contains方法

public void testSetContains(){

//提示輸入課程名稱

System.out.println("請輸入已選的課程名稱:");

String name = console.next();

//創建一個新的課程對象,ID和名稱,與course對象完全一樣

Course course2 = new Course();

course2.setName(name);

System.out.println("新創建課程:"+course2.getName());

//System.out.println("備選課程中是否包含課程:"+course2.getName());

System.out.println("備選課程中是否包含課程:"+course2.getName()+","+student.courses.contains(course2));

}

public static void main(String[] args) {

// TODO Auto-generated method stub


SetTest st = new SetTest();

st.testAdd();

// st.testListContains();

st.testForEach();

st.createStudentAndSelectCours();

st.testSetContains();

// st.testForEach();

// //創建一個學生對象

// Student student = new Student("1","小明");

// System.out.println("歡迎學生:"+student.getName()+"選課!");

// //創建一個Scanner對象,用來接收從鍵盤輸入的課程ID

// Scanner console = new Scanner(System.in);

//

// for(int i=0;i<3;i++){

// System.out.println("請輸入課程ID");

// String courseId = console.next();

// for(Course cr:st.coursesToSelect){

// if(cr.getId().equals(courseId)){

// student.courses.add(cr);

// //set中,添加某個對象,無論添加多少次,最終只會保留一個該對象(的引用),并且,保留的是第一次添加的那一個

// //set中還可以添加null對象

// student.courses.add(cr);//該處可測試set中的對象是不可重復的,無論加多少次只會存不重復的

// }

// }

// }

// st.testForEachForSet(student);

}

public void testForEachForSet(Student student){

//打印輸出,學生所選的課程!

System.out.println("共選擇了:"+student.courses.size()+"門課程!");

for(Course cr:student.courses){//因為Set是無序的,所以只能是for each循環或者是iterator

System.out.println("選擇了課程:"+cr.getId()+":"+cr.getName());

}

}


}


正在回答

4 回答

我也犯了相同的錯誤,原因在創建學生并選課的方法里面,public void createStudentAndSelectCourses()的第一行代碼是student=new Student("1","小明"),而不是Student?student=new Student("1","小明"),因為student已經在前面定義過的,是公有屬性

7 回復 有任何疑惑可以回復我~

https://img1.sycdn.imooc.com//5b13f5e30001967607340133.jpg老師把這里改了,我也是這個錯誤,你的沒有改

3 回復 有任何疑惑可以回復我~

我的也是報這個錯,老師的為什么不報錯不知道;

Student對象沒有new在堆中開辟空間;??

public Student student ;

? ? public SetTest() {

? ? ? ? this.coursesToselect = new ArrayList<Course>();

? ? ? ? this.console = new Scanner(System.in);

? ? ? ? this.student = new Student();

? ? }

還需要在 Student中添加了一個空的構造函數;


1 回復 有任何疑惑可以回復我~

這個問題是出現空指針異常,應該是你在數組中沒有添加數據,但你去獲取這條數據,你可以把錯誤貼出來看看。

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

請問我的為什么拋出這個錯誤?求大神指點Exception in thread "main" java.lang.NullPointerException

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號