接受键盘输入 后面运行有问题! 跟你的一样 你的是True 我的是False

来源:6-1 学生选课---判断 List 中课程是否存在

慕慕1270022

2016-08-04 22:04


package 集合的用法;


import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.Scanner;


public class SetText {


List<KeCheng> keChengs;


private Scanner console;


SetText() {

this.keChengs = new ArrayList<KeCheng>();

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

}


// 添加方法

// 添加备选课程

public void textadd() {


// 1: 创建一个课程对象 并通过调用Add方法 添加到备选课程里面

KeCheng cr1 = new KeCheng("1", "数据结构");

keChengs.add(cr1);

// System.out.println("添加了 一个课程:" + temp1.id + " " + temp1.name);


// 2:

KeCheng cr2 = new KeCheng("2", "C语言");

keChengs.add(0, cr2);

// System.out.println("添加了 一个课程:" + temp2.id + " " + temp2.name);


// 3: 重复添加课程

// keChengs.add(cr1);

// KeCheng temp0 = (KeCheng) keChengs.get(2);

// System.out.println("添加了 一个课程:" + temp0.id + " " + temp0.name);


// 以下方法会抛出数组下标越界异常

/*

* KeCheng cr3 = new KeCheng("3", "高数"); xinxi.add(4, cr3); KeCheng

* temp3 = (KeCheng) xinxi.get(2); System.out.println("添加了 一个课程:" +

* temp3.id + " " + temp3.name);

*/


// 4:

KeCheng[] course = { new KeCheng("3", "离散数学"), new KeCheng("4", "汇编语言") };


// 将course转换成一个实例

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

// 这里是因为下标从0开始的

KeCheng temp3 = (KeCheng) keChengs.get(2);

KeCheng temp4 = (KeCheng) keChengs.get(3);

// System.out.println("添加了 两个课程:" + temp3.id + " " + temp3.name + " " +

// temp4.id + " " + temp4.name);


// 5:

KeCheng[] course2 = { new KeCheng("5", "高等数学"), new KeCheng("6", "大学英语") };

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

KeCheng temp5 = (KeCheng) keChengs.get(2);

KeCheng temp6 = (KeCheng) keChengs.get(3);

// System.out.println("添加了 两个课程:" + temp5.id + " " + temp5.name + " " +

// temp6.id + " " + temp6.name);


}


// 通过for each 方法访问集合元素

public void TextForEach() {


System.out.println("有如下课程待选   通过for each方法访问");


// 便利集合中的每一个元素将它取出来 作为object的一个变量

for (Object obj : keChengs) {

KeCheng cr = (KeCheng) obj;

System.out.println("课程:" + cr.id + "  " + cr.name);

}


}


// 测试List的contains的方法

public void TestListContains() {


// 取得备选课程的第0个元素

KeCheng course = keChengs.get(0);


// 打印输出keChengs是否包含course对象

System.out.println("取得课程: " + course.name);

System.out.println("备选课程中是否包含课程: " + course.name + "    " + keChengs.contains(course));


// 提示输入课程名称

System.out.println("请输入课程名称: ");

String name = console.next();


// 创建一个新的课程对象 ID和名称 与couse对象完全一样

KeCheng course2 = new KeCheng();

course2.name = name;

System.out.println("新创建的课程:   " + course2.name);

System.out.println("备选课程中是否包含课程: " + course2.name + "    " + keChengs.contains(course2));


}


/**

* @param args

*/

public static void main(String[] args) {


SetText setText = new SetText();

setText.textadd();

setText.TestListContains();

// setText.TextForEach();

// // 创建新的学生对象

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

// System.out.println("欢迎学生: " + student.name + " 选课 ! ! !");

// // 创建一个Scander对象用来接收从键盘输入的课程ID

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

//

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

// System.out.println("请输入课程ID:");

// String kechengID = reader.next();

// for (KeCheng cr : setText.keChengs) {

// if (cr.id.equals(kechengID)) {

// student.kebiao.add(cr);

//

// // Set 添加对象 无论添加多少次 最终只会保留一个该对象(的引用)并且保留的是第一次添加的那个

// // student.kebiao.add(cr);

//

// // set可以添加一个空的

// student.kebiao.add(null);

// }

// }

// }

//

// ShuChu(student);


}


// 打印输出 学生选择的课程

public static void ShuChu(Student student) {

System.out.println("共选择了" + student.kebiao.size() + "门课程");

for (KeCheng cr : student.kebiao) {

System.out.println("选择了课程" + cr.id + " " + cr.name);

}


}

}



package 集合的用法;


//课程类

public class KeCheng {

String id;

String name;


KeCheng() {


}


KeCheng(String id, String name) {

this.id = id;

this.name = name;

}


@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

KeCheng other = (KeCheng) obj;

if (id == null) {

if (other.id != null)

return false;

} else if (!id.equals(other.id))

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

return true;

}

}




package 集合的用法;


import java.util.HashSet;

import java.util.Set;


//学生类

public class Student {

public String id;

public String name;

public Set<KeCheng> kebiao;


Student(String id, String name) {

this.id = id;

this.name = name;

this.kebiao = new HashSet<KeCheng>();


}

}


写回答 关注

3回答

  • 慕慕夕
    2016-10-14 10:38:44

    你重写的equals方法 有问题 

    //                if (id == null) {
    //			if (other.id != null)
    //				return false;
    //		} else if (!id.equals(other.id))
    //			return false;

    这段注释调,或者删除

  • qq_异端咸奶油_03783312
    2016-08-08 23:25:36

    equals方法重写的时候写错了  最后没有return true

  • ziom
    2016-08-05 22:33:34

    what are you talking about, dude?

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题