将文件中的对象添加到程序中

我正在编程游戏,在程序中我需要根据文件添加新的敌人。 现在我的问题是我在尝试读取此文件时遇到了无限循环。 我对编程比较陌生,所以我不确定如何解决这个问题。 这是问题代码。 文件中条目的示例如下:“Troll,6,4,1”。 谢谢您的帮助。

try { Scanner input = new Scanner(new File(filename)); while(input.hasNext()); { input.useDelimiter(",|\n"); String name = input.next(); int strength = input.nextInt(); int speed = input.nextInt(); int numVials = input.nextInt(); Enemy newEnemy = new Enemy(name, strength, speed, numVials); opponents.add(newEnemy); input.close(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

无限循环是由于; 在你的while语句之后。 此外,我认为您的代码存在逻辑相关问题。 我们可以读取文件的每一行,然后使用以下代码基于’,’拆分每一行:

  String line[]; do { line = input.next().split(","); String name = line[0]; int strength = Integer.parseInt(line[1]); int speed = Integer.parseInt(line[2]); int numVials = Integer.parseInt(line[3]); Enemy newEnemy = new Enemy(name, strength, speed, numVials); opponents.add(newEnemy); input.close(); } while (input.hasNext()); 

input.hasNext()不会将指针移动到下一行。

在第一次调用hasNext()之后,如果你没有从文件中读取, hasNext()将始终返回true。 因为输入的正面没有变化。

试试这个:

 try { Scanner input = new Scanner(new File(filename)); String x = null; while((x = input.next()) != null) { input.useDelimiter(",|\n"); String name = input.next(); int strength = input.nextInt(); int speed = input.nextInt(); int numVials = input.nextInt(); Enemy newEnemy = new Enemy(name, strength, speed, numVials); opponents.add(newEnemy); input.close(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

你写了:while(input.hasNext());

您需要先删除半冒号。

接下来,您已经关闭了循环内的输入,这也需要在循环外完成,因为在第一次关闭输入后将不会得到处理并将给出exception。