首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建学生管理程序的Java问题

创建学生管理程序的Java问题
EN

Stack Overflow用户
提问于 2020-04-20 16:59:30
回答 2查看 78关注 0票数 0

一个注册学生的程序,但是在输入一个有先例的以前的学生编号时,它应该在"isHere“类的”isHere“测试函数中打印”学生已经存在“,但是它确实做到了,除此之外,这里的问题是什么?

代码语言:javascript
复制
case 1:
    System.out.println("Bitte Geben sie ihre matrikelnummer ein: ");
    String m = in.nextLine();
    if (!Student.testMN(m)) {
       System.out.println("Die MatrikelNummer ist nicht gultig");
       break;
    }
    if (!uni.isHere(m)) {
        System.out.println("Der Student existiert beriets!");
        break;
    }
    System.out.println("Bitte Geben sie ihre Vorname ein: ");
    String v = in.nextLine();
    System.out.println("Bitte Geben sie ihre Nachname ein: ");
    String n = in.nextLine();
    System.out.println("Geben sie ihre T.C ein: ");
    String t = in.nextLine();
    Student stud = new Student(v , n , m , t);
    uni.addStudent(stud);
    break;
代码语言:javascript
复制
public class Universitaet {
    Vector<Student> studenten = new Vector();
    private int anzahl_studenten = 0;

    public boolean isHere(String m) {
        for (int i = 0 ; i < studenten.size() ; i++) {
            if (Integer.parseInt(m) == Integer.parseInt(studenten.get(i).getMN())) {
                return false;
            } else {
                return true;
            }
        }
        return true;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-20 17:06:27

问题出在您的isHere方法中,您在循环本身中返回true。仅当循环完成并且m与任何学生的MN值都不匹配时,它才应返回true。正确的实现可以如下所示:

代码语言:javascript
复制
public boolean isHere(String m) {
    boolean found = true;
    for (int i = 0 ; i < studenten.size() ; i++) {
        if (Integer.parseInt(m) == Integer.parseInt(studenten.get(i).getMN())) {
            found = false;
            break;
        } 
     }
     return found;
}

另一种实现可以如下所示:

代码语言:javascript
复制
public boolean isHere(String m) {
    for (int i = 0 ; i < studenten.size() ; i++) {
        if (Integer.parseInt(m) == Integer.parseInt(studenten.get(i).getMN())) {
            return false;
        } 
    }
    return true;
}
票数 0
EN

Stack Overflow用户

发布于 2020-04-20 17:07:44

您的isHere()方法中有一个逻辑错误。应该是..。

代码语言:javascript
复制
public boolean isHere(String m) {
        for(int i = 0 ; i < studenten.size() ; i++){
            if(Integer.parseInt(m) == Integer.parseInt(studenten.get(i).getMN())){
                return false;
            }
         }
         return true;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61318635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档