当前位置: 首页 > 知识库问答 >
问题:

扫描程序对象跳过

黄高爽
2023-03-14

这是我程序的主要方法。当调用nextLine()函数时,扫描器解析变量L而不是space时,我遇到了一个问题。不过,nextInt()可以按照预期工作。我的程序在试图用integer.parseint()函数解析空字符串时崩溃了。

第一个输入是指定将要进行的行数的整数,下面的输入是空格分隔的整数。

Scanner s = new Scanner (System.in);
int l = s.nextInt();

for (int i = 0; i < l; i++){
    String space = s.nextLine();
    int x = Integer.parseInt(space.split(" ")[0]);
    int y = Integer.parseInt(space.split(" ")[1]);
    printPrimes(x, y);
    System.out.println();
}

堆栈跟踪如下:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at Contests.SPOJ.SPOJ2.main(SPOJ2.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

共有1个答案

舒浩邈
2023-03-14

nextInt不会使用下面的换行符,因此下一次调用nextLine将是输入中剩下的唯一换行符('\n')。

循环之前调用nextLine以丢弃它:

Scanner s = new Scanner (System.in);
int l = s.nextInt();
s.nextLine(); // Discarding the '\n'

for (int i = 0; i < l; i++){
    String space = s.nextLine();
...
 类似资料:
  • 问题内容: 我正在使用嵌套循环从字符串行(从文本文件)中提取数字,如下所示: 问题在于此代码将跳过所有空格,但是我也需要使用这些“空格”。那么可以返回空格还是我需要使用其他东西? 我的文本文件可能包含以下内容: 这些空白行各包含1条,这就是我需要返回的行。 问题答案: 使用扫描仪和方法,您将找到解决方案,因为这将使您能够捕获空白行或空白行。

  • 这让我很费解。我正在试图理解如何解决Java无法识别我的“settitle”方法存在于第一个“song”之后的问题。这是一个音乐应用程序。它还有另外两个类。我们将非常感谢所有的帮助。 编辑:添加歌曲类。

  • 这是我使用的代码: 但当它到达这一点时,它只会说“创建一个名称”。和“创建密码”。两个都在同一时间,然后我必须打一些东西。所以它基本上跳过了需要键入字符串的扫描器部分。在“创建名称”之后。和“创建密码”。然后输入,名称和密码都改为我输入的内容。我怎么解决这个? 这是全班学生。我只是在测试,所以它实际上不是一个程序: 抱歉我语法不好。我不是英国人,所以我很难解释。

  • 我试图从用户那里得到2个整数。这是我的代码的相关部分: 起初,它抛出一个,所以我使用了。现在,它只需跳过扫描器并立即调用。

  • 当我尝试使用javac在windows命令提示符中编译程序时,我得到以下错误消息: 我做错了什么?

  • 假设我有一个扫描对象接收两个输入 我用一个 但是对于1号输入,我想通过不是int类型的方式进行验证。我该怎么做呢?比如像