Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 输入“时关闭扫描仪”;0“;_Java_Java.util.scanner - Fatal编程技术网

Java 输入“时关闭扫描仪”;0“;

Java 输入“时关闭扫描仪”;0“;,java,java.util.scanner,Java,Java.util.scanner,我正在编写一个程序,其中用户输入一个字符串输入,程序将查找字数和整数。当用户输入“0”时,扫描仪应关闭 我的代码 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 Co

我正在编写一个程序,其中用户输入一个字符串输入,程序将查找字数和整数。当用户输入“0”时,扫描仪应关闭

我的代码

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;
    }
}
当我运行我的程序时,我得到以下例外:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextInt(Scanner.java:2160)
    at java.util.Scanner.nextInt(Scanner.java:2119)
    at RunMe.main(RunMe.java:13)

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


解决方案
对于扫描仪,控制台输入必须使用“回车”输入。为了避免这种情况,需要其他一些本机库,例如。在。

中还有其他选项。请在您的帖子中也包含一个示例输入,好吗?.s.nextInt()将只读取一个数字,而不读取一个字符串(单词)。当您尝试输入一个单词时,s.nextInt()将为您提供InputMismatchException,因为它需要一个数字。检查输入是否为int的好方法@谢谢你。这很好:)当输入0时,扫描仪仍然不会关闭。我必须单击“回车”来计算字数和numbers@KonstantinaPapagiannopoulou你的意思是你不想点击“回车”键(即当用户按“0”键时立即计算字数和数字)?@Tsung TingKuo!有可能吗?@Konstantina Papagiannopoulou非常感谢!
while(s.hasNext())
{
    if(s.hasNextInt())
    {
        if (s.nextInt() == 0) break;
        numbers.add();
    }
    else
    {
        s.next();
        words.add();
    }
}