為什么第62行已經創(chuàng)建了student對象,第86行還是報錯?代碼見下
package?com.imooc.collection; import?java.util.ArrayList; import?java.util.Arrays; import?java.util.List; import?java.util.Scanner; public?class?TestSet?{ public?List<Course>?coursesToSelect; private?Scanner?console; public?TestSet(){ this.coursesToSelect=new?ArrayList<Course>(); console=new?Scanner(System.in); } ???public?void?testAdd(){ ???? ??/* ???? ???*?創(chuàng)建一個實例對象,并通過調用add方法添加到備選課程中 ???? ???*/ ???? ??Course?cr1=new?Course("1","數據結構"); ???? ??coursesToSelect.add(cr1);//添加課程1 ???? ??Course?temp=(Course)?coursesToSelect.get(0); ???? ??System.out.println("插了一門課程:"+temp.id+":"+temp.name); ???? ?? ???? ??Course?cr2=new?Course("2","C語言"); ???? ??coursesToSelect.add(1,?cr2);//添加課程2 ???? ??Course?temp2=(Course)coursesToSelect.get(1);//取出第一個課程 ???? ??System.out.println("插入了一門課程:"+cr2.id+":"+cr2.name);//輸出第一個課程 ???? ?? ???? ??Course[]?course={new?Course("3","高等數學"),new?Course("4","射雕英雄傳")}; ???? ??coursesToSelect.addAll(Arrays.asList(course)); ???? ??Course?temp3=(Course)?coursesToSelect.get(2); ???? ??Course?temp4=(Course)?coursesToSelect.get(3); ???? ??System.out.println("插入了兩門課程:"+temp3.id+":"+temp3.name+";"+ ???? ??temp4.id+":"+temp4.name); ???} ??? ???public?void?testForeach(){ ???? ??System.out.println("通過foreach方法遍歷List:"); ???? ??for(Object?obj:coursesToSelect){ ???? ??Course?cr=(Course)obj; ???? ??System.out.println(cr.id+":"+cr.name); ?? ???? ??} ???} ??? ???/* ????*?測試List的contains方法 ????*/ ???public?void?testListContains(){ ???Course?course=coursesToSelect.get(0); ???System.out.println("取得課程:"+course.name); ???System.out.println("是否包含課程"+course.name+","+coursesToSelect.contains(course)); ???//提示用戶輸入想要查詢的課程 ???System.out.println("請輸入課程名稱:"); ???String?name=console.next(); ???Course?course2=new?Course();//調用無參構造器 ???course2.name=name; ???System.out.println("取得課程:"+course2.name); ???System.out.println("是否包含課程"+course2.name+","+coursesToSelect.contains(course2)); ???} ??? ???public?void?createStudentAndSelectCourses(){ ????????Student??student=new?Student("1",?"小冒"); ?? ????????System.out.println("歡迎"+student.name+"選課!"); ?? ????????for(int?i=0;i<3;i++){ ??? ?? ?????????????System.out.println("請輸入想選的課程id:"); ?? ?????????????Scanner?input=new?Scanner(System.in); ?? ?????????????String?courseID=input.next();//注意類型?。?!, ?? ?????????????for(Course?course:coursesToSelect){ ?? ????if(course.id.equals(courseID)){//前后類型相同,否則為否,課程添加不進去?。。??? ???student.courses.add(course);??? ???????} ?? ???} ?? ???} ?? ???} ???/* ????*?測試Set的contains方法 ????*/ ? ???public?void?testSetContains(){ ???System.out.println("請輸入學生已選的課程名稱:"); ???String?name=console.next(); ???Course?course2=new?Course();//調用無參構造器 ???course2.name=name; ???System.out.println("取得課程:"+course2.name); ???System.out.println("是否包含課程"+course2.name+","+student.courses.contains(course2)); ??? ???} ??? ??? ???public?static?void?main(String[]?args){ ???TestSet?ts=new?TestSet(); ?????? ???ts.testAdd(); //?????? ???ts.testListContains(); ?? ???????ts.testForeach(); //?????? ???Student?student=new?Student("1",?"小冒"); //?????? ???System.out.println("歡迎"+student.name+"選課!"); //?????? ? //?????? ??? //?????? ???for(int?i=0;i<3;i++){ ??? //?????? ???System.out.println("請輸入想選的課程id:"); //?????? ??Scanner?input=new?Scanner(System.in); //?????? ???String?courseID=input.next();//注意類型?。?!, //?????? ???for(Course?course:ts.coursesToSelect){ //?????? ???if(course.id.equals(courseID)){//前后類型相同,否則為否,課程添加不進去?。。?//?????? ???student.courses.add(course);??? //?????? ???}? //?????? ???}??? //?????? ???} //??????????ts.testForEachForSet(student); //???????? ? ???} ???public?void?testForEachForSet(Student?student){ ???System.out.println("共選擇了"+student.courses.size()+"門課程!"); ??? ???for(Course?course:student.courses){ ??? ???System.out.println("選擇了課程:"+course.id+":"+course.name); ??? ???}??? ???????} ???/* ????*?遍歷學生的所有課程 ????*/ ?? }
錯誤截圖:
2017-02-18
你創(chuàng)建的62行的變量是局部變量,作用域就在你創(chuàng)建的那個函數范圍內,86行屬于另外一個函數的作用域了。