為什么第62行已經創建了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(){
???? ??/*
???? ???*?創建一個實例對象,并通過調用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
你創建的62行的變量是局部變量,作用域就在你創建的那個函數范圍內,86行屬于另外一個函數的作用域了。