当前位置: 首页 > 面试题库 >

没有这样的元素异常吗?

邢俊悟
2023-03-14
问题内容

所以这是我的代码:

public static void getArmor(String treasure)
    throws FileNotFoundException{
    Random rand=new Random();
    Scanner file=new Scanner(new File ("armor.txt"));
    while(!file.next().equals(treasure)){
        file.next(); //stack trace error here
        }
    int min=file.nextInt();
    int max=file.nextInt();
    int defense=min + (int)(Math.random() * ((max - min) + 1));
    treasure=treasure.replace("_", " ");
    System.out.println(treasure);
    System.out.println("Defense: "+defense);
    System.out.println("=====");
    System.out.println();
    }

public static void getTreasureClass(Monster monGet)
throws FileNotFoundException{
    Random rand = new Random();
    String tc=monGet.getTreasureClass();
    while (tc.startsWith("tc:")){
        Scanner scan=new Scanner(new File ("TreasureClassEx.txt"));
        String eachLine=scan.nextLine();
        while(!tc.equals(scan.next())){
        eachLine=scan.nextLine();
        }
        for (int i=0;i<=rand.nextInt(3);i++){
            tc=scan.next();
        }
    getArmor(tc); //stack trace error here
    }
 }

由于某种原因,我收到了No Such Element Exception

    at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1416)
at LootGenerator.getArmor(LootGenerator.java:43)
at LootGenerator.getTreasureClass(LootGenerator.java:68)
at LootGenerator.getMonster(LootGenerator.java:127)
at LootGenerator.theGame(LootGenerator.java:19)
at LootGenerator.main(LootGenerator.java:11)

我不确定为什么。基本上我的程序正在搜索两个文本文件-armour.txt和TreasureClassEx.txt。getTreasureClass从怪物那里获得一个宝藏类,并在txt中搜索,直到到达基础装甲项目(不以tc:开头的字符串。)然后,它在getArmor中搜索与所获得的基础装甲名称相匹配的装甲宝藏类。任何意见,将不胜感激!谢谢!


问题答案:

即使扫描仪不再具有要提供的下一个元素,您似乎仍在呼叫下一步……引发异常。

while(!file.next().equals(treasure)){
        file.next();
        }

应该是这样的

boolean foundTreasure = false;

while(file.hasNext()){
     if(file.next().equals(treasure)){
          foundTreasure = true;
          break; // found treasure, if you need to use it, assign to variable beforehand
     }
}
    // out here, either we never found treasure at all, or the last element we looked as was treasure... act accordingly


 类似资料: