我正在编写一个程序,用户输入一个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;
}
}
答案 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;。为避免这种情况,需要一些其他本机库,例如JLine。 this similar question中还有其他选项。