Java中如何从数组筛选并按行显示指定数字?
解决方法:把正数/负数分别拼接后统一输出
你的问题在于每次判断后直接用System.out.println()输出单个数字,这个方法会自动换行,所以每个数都单独占一行。要实现同一类数字在一行显示,我们可以先把所有负数和正数分别收集起来,最后一次性输出。
这里有两种实现方式,你可以根据需求选择:
方式1:用字符串拼接(适合小数组)
import java.util.Arrays; public class NumberGrouping { public static void main(String[] args) { int[] array = {2, -5, 4, 12, 54, -2, -50, 150}; Arrays.sort(array); String negativeNumbers = ""; String positiveNumbers = ""; for (int i = 0; i < array.length; i++) { if (array[i] < 0) { // 把负数拼接到字符串,用空格分隔 negativeNumbers += array[i] + " "; } else if (array[i] > 0) { // 把正数拼接到字符串,用空格分隔 positiveNumbers += array[i] + " "; } } // 输出结果,trim()去掉末尾多余的空格 System.out.println("负数:" + negativeNumbers.trim()); System.out.println("正数:" + positiveNumbers.trim()); } }
方式2:用StringBuilder(更高效,适合大数据量)
字符串拼接在循环里会频繁创建新对象,用StringBuilder可以避免这个问题,性能更好:
import java.util.Arrays; public class NumberGrouping { public static void main(String[] args) { int[] array = {2, -5, 4, 12, 54, -2, -50, 150}; Arrays.sort(array); StringBuilder negativeSb = new StringBuilder(); StringBuilder positiveSb = new StringBuilder(); // 用增强for循环更简洁 for (int num : array) { if (num < 0) { negativeSb.append(num).append(" "); } else if (num > 0) { positiveSb.append(num).append(" "); } } // 转换为字符串并输出 System.out.println("负数:" + negativeSb.toString().trim()); System.out.println("正数:" + positiveSb.toString().trim()); } }
运行后输出会是这样的:
负数:-50 -5 -2 正数:2 4 12 54 150
这样就实现了所有负数在一行,所有正数在另一行的需求啦~
内容的提问来源于stack exchange,提问作者maria
相关产品推荐
相关产品推荐

