将文件中的对象添加到程序中
Adding an object from file into program
我正在编写游戏,在程序中我需要根据文件添加新敌人。现在我的问题是我在尝试读取此文件时 运行 进入了无限循环。我对编程比较陌生,所以我不确定如何解决这个问题。这是问题代码。文件中条目的外观示例如下:"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();
}
input.hasNext()
不将指针移动到下一行。
在您第一次调用 hasNext()
后,如果您不从文件中读取,hasNext()
将始终 return 为真。因为输入的前面没有变化。
试试这个:
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
语句后的 ;
导致了无限循环。此外,我认为您的代码存在与逻辑相关的问题。我们可以读取文件的每一行,然后使用以下代码根据“,”拆分每一行:
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());
你写了 : while(input.hasNext());
您需要先删除分号。
接下来您关闭了循环内的输入,该输入也需要在循环外完成,因为在第一次关闭输入后将不会得到处理并会给出异常。
我正在编写游戏,在程序中我需要根据文件添加新敌人。现在我的问题是我在尝试读取此文件时 运行 进入了无限循环。我对编程比较陌生,所以我不确定如何解决这个问题。这是问题代码。文件中条目的外观示例如下:"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();
}
input.hasNext()
不将指针移动到下一行。
在您第一次调用 hasNext()
后,如果您不从文件中读取,hasNext()
将始终 return 为真。因为输入的前面没有变化。
试试这个:
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
语句后的 ;
导致了无限循环。此外,我认为您的代码存在与逻辑相关的问题。我们可以读取文件的每一行,然后使用以下代码根据“,”拆分每一行:
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());
你写了 : while(input.hasNext());
您需要先删除分号。
接下来您关闭了循环内的输入,该输入也需要在循环外完成,因为在第一次关闭输入后将不会得到处理并会给出异常。