问答详情
源自:6-2 学生选课---判断 Set 中课程是否存在

为什么第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);
   		   }   
       }
	   /*
	    * 遍历学生的所有课程
	    */
	  


}

错误截图:

http://img.mukewang.com/58a82a250001b9cb08400037.jpg

提问者:qq_析木_0 2017-02-18 19:00

个回答

  • 芙蕾之歌
    2017-02-18 22:49:52
    已采纳

    你创建的62行的变量是局部变量,作用域就在你创建的那个函数范围内,86行属于另外一个函数的作用域了。