首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java NameLengthNotValidException总是在domainclass中抛出。

Java NameLengthNotValidException总是在domainclass中抛出。
EN

Stack Overflow用户
提问于 2019-03-21 01:10:39
回答 1查看 69关注 0票数 0

重要提示:可能是一个菜鸟问题,但我不知道如何解决它。

我有一个UI类,用来通过扫描器输入姓名和性别(geslacht) (参见下面的代码)

代码语言:javascript
复制
 private static void geefNaamEnGeslacht(int aantal) {
    String naam, geslacht;
    for (int i = 0; i < aantal; i++) {
        System.out.print("Wat is de naam van speler " + (i + 1) + " (min 6 tekens, max 12 tekens)? ");
        naam = sc.next();
        naam += sc.nextLine();
        System.out.print("Wat is het geslacht van speler " + (i + 1) + "(man=m vrouw=v)? ");
        geslacht = sc.next();
        System.out.println(naam.length());
        try {
            dc.maakSpelerAan(naam, geslacht.charAt(0));
        } catch (NameLengthNotValidException e) {
            System.out.println(e.getMessage());
            i--;
        }
    }
}

在我的域类中,我在setter中检查该名称的长度,但无论我尝试什么,它都会抛出异常。在调试时,奇怪的是,我选择的任何名称的长度都在6到12个字符之间。(参见下面的代码)

代码语言:javascript
复制
public final void setNaam(String naam) {
    int lengte = naam.length();
    if (naam.length() < 6 || naam.length() > 12) {
        throw new NameLengthNotValidException("Je naam moet tussen 6 en 12 tekens liggen!");
    }
    this.naam = naam;

}

任何想法或小贴士都会被采纳。

dc.maakSpelerAan的EDIT1代码

代码语言:javascript
复制
public void maakSpelerAan(String naam, char geslacht){
    s.maakSpeler(naam, geslacht);   
}

s.maakspeler的EDIT2代码

代码语言:javascript
复制
public void maakSpeler(String naam, char geslacht){
    if (spelCompleet()) {
        throw new ListFilledException("De lijst met spelers is vol !");
    }

    if (!controleerUniekeNaam(naam)) {
        throw new NotUniqueNameException();
    }

    Kaart[] schatkaarten = new Kaart[STARTAANTAL];
    Kaart[] kerkerkaarten = new Kaart[STARTAANTAL];

    for (int i = 0; i > STARTAANTAL; i++) {
        schatkaarten[i] = stapels.get(SCHATKAART).geefBovensteKaart();
        kerkerkaarten[i] = stapels.get(KERKERKAART).geefBovensteKaart();
    }
    try{
    Speler s = new Speler(naam, geslacht);
    s.getKaarten(kerkerkaarten, schatkaarten);
    spelers.add(s);
    }catch (IllegalArgumentException | NameLengthNotValidException e){
       throw e;
   }

    if (spelCompleet()) {
        //UC2
        spelers.get(EERSTESPELERINDEX).setBeurt(true);
    } 


}

EDIT3重新发布正确的图像变量"naam“的图像,然后在调试时进入IF循环。在接口类中,MINLENGTHNAAM和MAXLENGTHNAAM分别设置为6和12。

用于MINLENGTH和MAXLENGTH的接口类中的EDIT4代码

代码语言:javascript
复制
public interface SpelInfo {
final int STARTAANTAL = 2;
final int MAXAANTALPUNTEN = 10;
final int INDEXNAAMDETAILS = 0;
final int INDEXGESLACHTDETAILS = 1;
final int INDEXPUNTENDETAILS = 2;
final int MINAANTALSPELERS = 3;
final int MAXAANTALSPELERS= 6;
final int EERSTESPELERINDEX = 0;
final int MAXLENGTHNAAM = 6;
final int MINLENGTHNAAM = 12;
final int AANTALSTAPELS = 2;
final char MAN = 'm';
final char VROUW = 'v';
final int SCHATKAART = 0;
final int KERKERKAART = 1;

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-21 01:56:27

在"Edit4“中,您需要将绿色行更改为:

代码语言:javascript
复制
if(naam.length() > MAXLENGTHNAAM || naam.length() < MINLENGTHNAAM) {

只有一个小逻辑问题:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55266548

复制
相关文章

相似问题

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