输入" 0"关闭扫描仪

时间:2015-11-01 15:06:35

标签: java java.util.scanner

我正在编写一个程序,用户输入一个String输入,程序找到单词数和int数。当用户输入" 0"时,扫描仪应该关闭。

我的代码

<script>

和班级计数器

import java.util.Scanner;

public class RunMe
{
public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    String  input = in.nextLine();
    Counter numbers = new Counter();
    Counter words = new Counter();
    Scanner s = new Scanner(input).useDelimiter("\\s");

    while(s.nextInt() != 0)
    {
        if(s.hasNextInt())
        {
            numbers.add();
        }
        else
        {
            words.add();
        }
    }

    s.close();
    in.close();
    System.out.println("Number of numbers : " + numbers.value());
    System.out.println("Number of words : " + words.value());

}
}

当我运行我的程序时,我得到以下例外:

public class Counter
{
    private int value;

    public int add()
    {
        value++;
        return value;
    }
    public int value()
    {
        return value;
    }
}

2 个答案:

答案 0 :(得分:3)

更改主循环的条件以检查是否有要读取的内容,如果数字等于0,则使用中断。

解决方案

while(s.hasNext())
{
    if(s.hasNextInt())
    {
        if (s.nextInt() == 0) break;
        numbers.add();
    }
    else
    {
        s.next();
        words.add();
    }
}

答案 1 :(得分:0)

使用扫描仪,控制台输入必须使用&#34输入&#34;输入&#34;。为避免这种情况,需要一些其他本机库,例如JLinethis similar question中还有其他选项。