所以这是我的代码:
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