You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Scanner类实现功能时遇NoSuchElementException(InfyTQ平台求助)

InfyTQ平台Java等比序列生成题适配方案

问题场景

在Infosys的InfyTQ在线平台完成Java编程题时,遇到以下问题:

  • 题目要求:根据输入的序列长度n,生成1,2,4,8...的等比序列
  • 本地VS Code及其他在线编译器运行正常,但平台抛出java.util.NoSuchElementException
  • 平台环境不可修改,需调整代码适配

初始给定代码

class Tester {
    public static void main(String[] args) {
        // Implement your code here 
    }
}

自行实现的代码

import java.util.Scanner;

class Tester {
    public static void main(String[] args) {
        // Implement your code here
        int sequence=1;
        
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter the length of sequence: ");      

        // input the lenght of the sequence
        int n = sc.nextInt();
        while(n!=0)
        {
           System.out.print(sequence);
           System.out.print(" ");
           sequence*=2;
           n-=1;
        }
    }
}

平台报错信息

Enter the length of sequence:
Runtime Exception
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Tester.main(myCode.java:12)

问题根源

  1. 交互提示干扰输入读取:InfyTQ平台采用非交互式预提供输入的模式,代码中输出的提示文本Enter the length of sequence: 会被平台识别为输出内容,而非输入引导,导致Scanner无法正确定位到输入的整数。
  2. 无输入有效性判断:未检查输入是否存在,当平台未提供有效输入时,直接调用nextInt()会抛出异常。

修正后的代码

import java.util.Scanner;

class Tester {
    public static void main(String[] args) {
        int sequence = 1;
        
        Scanner sc = new Scanner(System.in);
        
        // 先判断是否有有效整数输入,再执行读取逻辑
        if (sc.hasNextInt()) {
            int n = sc.nextInt();
            while (n > 0) { // 改为n>0更贴合"序列元素个数为正整数"的题目逻辑
                System.out.print(sequence + " ");
                sequence *= 2;
                n--;
            }
        }
        
        sc.close(); // 规范释放Scanner资源
    }
}

关键修改点

  • 移除交互提示:删除System.out.print("Enter the length of sequence: "),适配平台非交互式输入机制。
  • 增加输入存在性判断:用sc.hasNextInt()确保存在有效输入后再调用nextInt(),避免无输入时抛出异常。
  • 优化循环条件:将n!=0改为n>0,避免输入负数时进入无效循环,符合题目中“序列元素个数”为正整数的逻辑。
  • 规范资源释放:调用sc.close()关闭Scanner,释放系统资源。

内容的提问来源于stack exchange,提问作者Puru Raj Singh Uppal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:40:43