慕课网Java第三季学习

6-2 学生选课—判断set中课程是否存在
Exception in thread “main” java.lang.NullPointerException
报错,解决方案是Scanner没写对
console是全局变量,在构造器里面初始化,之后在其他方法中使用。
即使是private 也没关系
正确的如下:

package com.imooc.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

/**
 * 如何寻找set中是否存在某元素
 * 
 *
 */
public class SetTest4 {
    public List<Course> coursesToSelect;
    public SetTest4(){
        coursesToSelect = new ArrayList<Course>();  
        console = new Scanner(System.in);
    }
    private Scanner console;
    public Student student;



    public void testAdd(){
        Course[] course ={new Course("1","数据结构"),new Course("2","C语言"),
                new Course("3","离散数学"),new Course("4","汇编语言"),
                new Course("5","高等数学"),new Course("6","大学英语")};
        coursesToSelect.addAll(Arrays.asList(course));


    }
    //创建学生对象并选课(先固定一次选3门课),选完课输出一下学生对象的属性(调用TestPrint方法)
    public void creatStudentAndSelectCours(){
        student = new Student("1","小明");


        int i = 0;
        while(i<3){
            System.out.println("请输入要选的课程的序号:");
            String id = console.next();
            //先判断要选的序号在原来待选的课程里是否有,有,才能放进去,遍历比较
            for(Course cr: coursesToSelect){
                if(cr.id.equals(id)){
                    student.courses.add(cr);        
                    i++;
                }else continue;
            }           
        }
        TestPrint(student);
    }
    //打印学生对象里面的属性,包括ID,name,已选课程
    public void TestPrint(Student student){
        for(Course cr:student.courses){
            System.out.println("选择了课程:"+cr.id+":"+cr.name);
        }
    }
    //用名字判断学生的已选课程中是否有一门课 学生的已选课程属性是HashSet
    public void testSetContain(){
        System.out.println("输入课程名称");

        String name  = console.next();
        Course cr = new Course();
        cr.name = name;
        //boolean a = student.courses.contains(cr);
        System.out.println(student.courses.contains(cr));
    }
    /*public void testSetContain(){
        System.out.println("输入想查询是否存在的课程名称:");
        String name = console.next();
        Course cr = new Course();
        cr.name = name;
        System.out.println(student.courses.contains(cr));

    }*/

    public static void main(String[] args) {
        SetTest4 st2 = new SetTest4();
        st2.testAdd();
        st2.creatStudentAndSelectCours();
        st2.testSetContain();
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值