问答详情
源自:4-11 学生选课---通过 Set 集合管理课程

请问一下各位大佬,我的这段代码最后的f();方法为什么不执行,多谢啦

//代码里的Course类和Student类都是和视频里一样的

package shili;


import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class StudentTest {

public List<Course> a;

public StudentTest() {

this.a=new ArrayList<Course>();

}

public void addCourse() {

Course cr1=new Course("1","米饭");

Course cr2=new Course("2","包子");

Course cr3=new Course("3","饼");

Course cr4=new Course("4","饺子");

Course cr5=new Course("5","馒头");

Course cr6=new Course("6","寿司");

Course cr7=new Course("7","鸡腿");

a.add(cr1);

a.add(cr2);

a.add(cr3);

a.add(cr4);

a.add(cr5);

a.add(cr6);

a.add(cr7);

}

public void forec() {

for(Object k:a) {

Course cr=(Course) k;

System.out.println(cr.id+cr.name);

}

}


public static void main(String[] args) {

StudentTest xc=new StudentTest();

System.out.println("本餐厅有以下主食:");

xc.addCourse();

xc.forec();

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

System.out.println("请"+student.name+"选餐:");

Scanner xh=new Scanner(System.in);

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

System.out.println("请输入食物序号:");

int one=xh.nextInt();

for(Course cr:xc.a) {

if(cr.id.equals(xh)) {

student.courses.add(cr);

}


}

}

xc.f(student);


}

public void f(Student student) {

for(Course cr:student.courses) {

System.out.println(cr.id+cr.name);

}

}


}



提问者:慕码人2851768 2019-03-17 16:27

个回答

  • Miko米米
    2019-05-14 23:11:33

    System.out.println("请输入食物序号:");

    int one=xh.nextInt();

    for(Course cr:xc.a) {

        if(cr.id.equals(xh)) {

        student.courses.add(cr)

    }

    无法输出的原因有两个,在粗体的地方↑

    1、if语句中 你的cr.id一直是在和xh整体比较,这样判断结果始终是错的,没办法添加,我猜你本来可能想让cr.id 和 从xh中读出来的 one 来进行比较

    2、如果你的Course类和视频里面的构造方法一样,那么它的 id 和 name 都是String类型,而读出的 one 是int类型,两个对象的类型不同,判断结果也是否,无法添加

    修改成这样大概就可以执行了:

        String one=xh.next();

        if(cr.id.equals(one)) 

    虽然感觉已经回答晚了hhh不过希望能帮到你!?