我正在为最终项目写一个游戏。游戏的目标是尽可能多地获得猫。获得猫的一种方法是采用它。所以我有以下方法:
public void adoptCat()
{
Scanner keyboard = new Scanner(System.in);
catCounter++;
System.out.println("You just adopted a cat! It needs a name. "
+ "Please enter in a name for your new cat: ");
String catName = keyboard.nextLine();
catNames.add(catName);
catHealth.add(100);
scoreCounter = scoreCounter + 10;
keyboard.close();
}
当我打印出arraylist时,第一种方法可以正常工作。但是一旦我调用另一种方法,它就会给我一个错误,说没有找到任何行。我想知道我是否需要先以某种方式冲洗扫描仪,或者为什么它不会让我输入第二个名字。这是我到目前为止的代码:
public class Agnus
{
private int catCounter = 0;
private int scoreCounter = 0;
private ArrayList<String> catNames = new ArrayList<>();
private ArrayList<Integer> catHealth = new ArrayList<>();
public void findStray()
{
Scanner keyboard = new Scanner(System.in);
catCounter++;
System.out.println("You just found a feral cat! It needs a name. "
+ "Please enter in a name for your new cat: ");
String name = keyboard.nextLine();
catNames.add(name);
catHealth.add(100);
scoreCounter = scoreCounter + 5;
keyboard.close();
}
public void adoptCat()
{
Scanner keyboard = new Scanner(System.in);
catCounter++;
System.out.println("You just adopted a cat! It needs a name. "
+ "Please enter in a name for your new cat: ");
String name = keyboard.nextLine();
catNames.add(name);
catHealth.add(100);
scoreCounter = scoreCounter + 10;
keyboard.close();
}
public void stealCat()
{
Scanner keyboard = new Scanner(System.in);
catCounter++;
System.out.println("You just stole your neighbors cat! It needs"
+ " a new name. Please enter in a name for your new cat: ");
String name = keyboard.nextLine();
catNames.add(name);
catHealth.add(100);
scoreCounter = scoreCounter + 20;
keyboard.close();
}
}
演示代码如下所示:
public class AgnusDemo
{
public static void main(String[] args)
{
Agnus agnus = new Agnus();
agnus.adoptCat();
System.out.println(agnus);
agnus.stealCat();
System.out.println(agnus);
}
}
这就是我得到的错误:
You just adopted a cat! It needs a name. Please enter in a name for your new cat:
James
Here are all your cat's names and their health:
[James] ---> [100]
You just stole your neighbors cat! It needs a new name.
Please enter in a name for your new cat:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at Agnus.stealCat(Agnus.java:78)
at AgnusDemo.main(AgnusDemo.java:12)
我希望我尽可能清楚地说明这一点。希望我提供了足够的信息。如果没有让我知道。谢谢你能给我的任何帮助!
米什
答案 0 :(得分:0)
尝试在类级别创建扫描程序对象。
import java.util.ArrayList;
import java.util.Scanner;
public class Agnus {
private int catCounter = 0;
private int scoreCounter = 0;
private ArrayList<String> catNames = new ArrayList<>();
private ArrayList<Integer> catHealth = new ArrayList<>();
Scanner keyboard = new Scanner(System.in);//<-- create the scanner
//object at class level
public void findStray()
{
catCounter++;
System.out.println("You just found a feral cat! It needs a name. "
+ "Please enter in a name for your new cat: ");
String name = keyboard.nextLine();
catNames.add(name);
catHealth.add(100);
scoreCounter = scoreCounter + 5;
}
public void adoptCat()
{
catCounter++;
System.out.println("You just adopted a cat! It needs a name. "
+ "Please enter in a name for your new cat: ");
String name = keyboard.nextLine();
catNames.add(name);
catHealth.add(100);
scoreCounter = scoreCounter + 10;
}
public void stealCat()
{
catCounter++;
System.out.println("You just stole your neighbors cat! It needs"
+ " a new name. Please enter in a name for your new cat: ");
String name = keyboard.next();
catNames.add(name);
catHealth.add(100);
scoreCounter = scoreCounter + 20;
}
}