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

扫描仪-codeChef中的nextInt问题[重复]

倪鸿禧
2023-03-14

这是我在Jcreator上编写的代码

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Codechef.main(Main.java:14)

代码如下:-

import java.util.*;
import java.lang.*;
import java.io.*;

class Codechef {
    public static void main (String[] args) throws java.lang.Exception {
        Scanner s =new Scanner(System.in);
        int n=s.nextInt(); //error points to this line
        int k=s.nextInt();
        int a[]=new int[n+1];
        int sum=1,x=1,y=n;
        for(int i=1; i<=n; i++) {
            a[i]=s.nextInt();
        }
        while(x!=n) {
            int temp=a[y]-a[x];
            if(temp>=1 && temp<=k) {
                sum=sum+y;
                x=y;
                y=n;
            } else {
                y--;
            }
        }
        System.out.println(sum);
    }
}

什么是错误的,我如何纠正它?请帮助。

共有1个答案

林元明
2023-03-14

当没有更多的整数要输入时,会出现此异常。在输入整数之前检查输入中是否还有更多的整数可以解决这个问题。

例如,您可以修改数组输入片段,如下所示:

for(int i=1;i<=n;i++)
    if(s.hasNextInt())
        a[i]=s.nextInt();
 类似资料:
  • 我是Java新手。我必须从2D数组向终端显示int系数。我想在同一行中为同一卖家提供每个值。有一个换行符(由于扫描仪?)。我一直在寻找分隔符system.in但我不明白如何使用它,如果这是合适的。 请帮帮我好吗?先谢谢你 最终结果: 输入卖家数量5 输入型号4的数量 卖家1 0 3. 2个 0

  • 我正在制作一个地下城探索类型的游戏,用户可以输入输入作为一个移动每回合(选择一个方向移动)。然而,我遇到了一个问题与采取扫描仪输入。当我测试我的方法一次,它是正确的,然而,当我把它进入一个while循环,以便我可以从玩家的每一个回合,我得到一个新的移动,在第一次输入后,我得到了一个错误。我不明白为什么我会得到这个错误,因为它不应该每次运行时都扫描新的输入吗?谢谢你的洞察力。 错误如下: 下面是有问

  • 问题内容: 如何将扫描仪的定界符设置为;或换行? 我试过: 但这不起作用。 问题答案: 通常,在模式中,您需要将翻倍。 所以,尝试 要么 编辑 :如果是问题,则可能要尝试以下操作: 它匹配的一个或多个,和。 注意 :我还没有尝试过这些。

  • 问题内容: 我正在尝试读取具有多个单词的字符串,即。洛杉矶或纽约市。如果有两个词并将它们分割在变量之间,则使用scanner.next()进行“出发”和“到达”只会读取第一个。nextLine()也不是很幸运。这是我的代码: 我知道这很简单,但我还没有弄清楚。 这是上面的代码的输入/输出: 输入航班号:29 输入出发城市:(立即跳至下一行) 输入到达城市: -—我真正想要的是---- 输入航班号:

  • 我有两个do-while循环用于进行自定义输入验证。问题是它会自动进入下一个do while循环。正确插入名称后,我必须放置一个新的下一行():name=scanner。nextLine() 我知道当光标停留在那里时,nextLine()会出现“小故障”,您必须调用nextLine()才能继续。资料来源:https://www.geeksforgeeks.org/why-is-scanner-sk

  • 我正试图使用扫描仪从键盘上获取一个int值,但我得到了以下错误: 写入核心转储失败。核心转储已被禁用。要启用核心转储,请在再次启动Java之前尝试“ulimit-c unlimited”