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

Java输入输出处理问题:Hackerrank测试用例未通过

问题分析与解决方案

看起来你在处理Scanner输入的时候踩了Java初学者常见的坑!你的代码读取顺序和Scanner方法的特性不匹配,导致无法正确获取输入内容,所以通不过测试用例。

错误原因

你当前的代码先调用了s.nextLine(),这会直接把整行输入(包括整数、双精度数和字符串)全部读走,后面的nextInt()/nextDouble()就没有输入可以读取了,自然会抛出异常或者读取失败。就算你调整顺序先读整数和双精度,也会遇到另一个问题:nextInt()和nextDouble()只会读取对应类型的内容,不会消耗掉输入行末尾的换行符,这时候紧接着调用nextLine()会读取到一个空字符串,而不是你需要的完整文本。

正确的代码实现

这里给你两种可行的方案:

方案1:先读取基本类型,再处理换行符后读取字符串

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        
        // 先读取整数和双精度浮点数
        int i = s.nextInt();
        double d = s.nextDouble();
        
        // 消耗掉整数和双精度数后面的换行符,避免后续nextLine读空
        s.nextLine();
        
        // 读取包含空格的完整字符串
        String str = s.nextLine();
        
        // 按照题目要求的格式输出
        System.out.println("String: " + str);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
        
        s.close();
    }
}

方案2:一次性读取整行,再拆分处理(适合输入格式固定的场景)

如果你确定输入是一行内的三个部分,也可以先读取整行,再拆分解析:

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String fullLine = s.nextLine();
        
        // 拆分字符串:最多拆成3部分,确保第三个部分保留所有空格
        String[] parts = fullLine.split(" ", 3);
        int i = Integer.parseInt(parts[0]);
        double d = Double.parseDouble(parts[1]);
        String str = parts[2];
        
        // 输出结果
        System.out.println("String: " + str);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
        
        s.close();
    }
}

关键知识点提醒

  • nextInt()/nextDouble():只读取对应类型的数值,会跳过前面的空白,但不会处理末尾的换行符。
  • nextLine():读取从当前位置到换行符的所有内容(包括空格),并且会消耗掉换行符。
  • split(" ", 3):第二个参数3表示最多拆分3部分,这样第三个部分会完整保留原输入中的空格,正好匹配题目要求的字符串输入。

内容的提问来源于stack exchange,提问作者Anurag Chhabra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:33:31