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

Java技术问题:如何仅在最后一个符合条件数字打印后换行

问题分析与解决方案

核心问题

你的代码存在两个关键问题:

  1. 数组越界异常:循环条件i < stopping完全错误,stopping是你输入的阈值100,而数组userValues仅包含5个元素。当循环执行到i=5时,会触发ArrayIndexOutOfBoundsException,程序直接崩溃,导致循环外的换行代码System.out.println("");根本没机会执行。
  2. 多余的尾部逗号:当前输出逻辑会在符合条件的最后一个数字后也添加逗号,不符合预期格式。

修复后的代码方案

方案一:先收集符合条件的元素再输出(简洁易读)

import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;

public class LabProgram {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        
        int userInputs = scnr.nextInt();
        int[] userValues = new int[userInputs];

        for (int i = 0; i < userInputs; i++) {
            userValues[i] = scnr.nextInt();
        }
        
        /* 修复后的代码 */
        int stopping = scnr.nextInt();
        
        List<Integer> validNumbers = new ArrayList<>();
        // 遍历所有输入的数值,而非stopping次
        for (int num : userValues) {
            if (num <= stopping) {
                validNumbers.add(num);
            }
        }
        
        // 用逗号拼接元素,直接输出并自动换行
        System.out.println(String.join(",", validNumbers.stream().map(String::valueOf).toArray(String[]::new)));
    }
}

方案二:直接输出时控制格式(无需额外集合)

import java.util.Scanner;

public class LabProgram {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        
        int userInputs = scnr.nextInt();
        int[] userValues = new int[userInputs];

        for (int i = 0; i < userInputs; i++) {
            userValues[i] = scnr.nextInt();
        }
        
        /* 修复后的代码 */
        int stopping = scnr.nextInt();
        
        boolean isFirstValid = true;
        // 遍历数组所有元素,避免越界
        for (int num : userValues) {
            if (num <= stopping) {
                if (!isFirstValid) {
                    // 非第一个元素先输出逗号
                    System.out.print(",");
                }
                System.out.print(num);
                isFirstValid = false;
            }
        }
        // 所有符合条件的元素输出完成后换行
        System.out.println();
    }
}

效果验证

输入5 50 60 140 200 75 100时,两种方案都会输出:

50,60,75

完美实现"75后换行"且无多余逗号的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:26:02