打印一行中的所有arraylist项(如果它们不是空的)

igetnqfo  于 2021-07-04  发布在  Java
关注(0)|答案(4)|浏览(367)

我有一个arraylist(items),我将从文本文件(input=rows from file)读取的行传递(添加)到这个arraylist。输入如下“0500123;0501023;050100; 0501023;050100;
这些行被添加到arraylist(items)中,方法是用分隔符(;)分隔每一行。
行大小(arraylist大小)从2到6不等。我需要的是只打印一行中的所有arraylist元素(意味着输入的所有行仍保留在一行中)。使用for循环,要么返回新行中的所有元素,要么返回单行中所有数组(所有行)的所有元素。
我用那些“如果”创建了下面的代码。代码正在运行,并且正在正确打印结果,但是如何缩短它?我试着使用一个流,但我不能做到这一点。
我怎样才能做到以下几点,也许有一个循环?
编辑:谢谢大家,真是太棒了。

ArrayList items= new ArrayList(Arrays.asList(input.split(";")));

if(items.size()==2) System.out.println(items.get(0)+""+items.get(1));
if(items.size()==3) System.out.println(items.get(0)+""+items.get(1)+""+items.get(2));
if(items.size()==4) System.out.println(items.get(0)+""+items.get(1)+""+items.get(2)+""+items.get(3));
if(items.size()==5) System.out.println(items.get(0)+""+items.get(1)+""+items.get(2)+""+items.get(3)+""+items.get(4));
if(items.size()==6) System.out.println(items.get(0)+""+items.get(1)+""+items.get(2)+""+items.get(3)+""+items.get(4)+""+items.get(5));
       }
6ljaweal

6ljaweal1#

可以基于索引提取子列表并形成输出字符串。

List<String> items = List.of("0500123;0501023;050100".split(";"));
int printFirstN = 2;

String c = String.join(" ", items.subList(0, printFirstN));
System.out.println(c);

输出: 0500123 0501023

mkshixfv

mkshixfv2#

下面是一些与您所描述的相同的示例代码:

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

public class Main {
    public static void main(String[] args) {
        String input =
                "1;2\n" +
                "1;2;3;4;5\n" +
                "1;2;3\n" +
                "1\n" +
                "1;2;3;4;5;6";
        Scanner scn = new Scanner(input);

        List<String> lines = new ArrayList<>();
        while (scn.hasNextLine()) {
            lines.add(scn.nextLine());
        }

        for (String line : lines) {
            String[] data = line.split(";");
            for (String s : data) {

                // Print each split data and a space with no newlines:
                System.out.print(s + " ");
            }

            // Print a line break:
            System.out.println();
        }   
    }
}

以下是程序的输出:

1 2
1 2 3 4 5
1 2 3
1
1 2 3 4 5 6
vnjpjtjt

vnjpjtjt3#

public static String extractNumber(String str) {
    return Arrays.stream(str.split("\\s*;\\s*"))    // \s* - just to exclude spaced
                 .filter(num -> !num.isBlank())
                 .collect(Collectors.joining());
}

输出:

String str = "0500123;0501023;050100;  ; 6666;   ";
System.out.println(extractNumber(str));

050012305010230501006666
0yg35tkg

0yg35tkg4#

你可以替换

if(items.size()==2) System.out.println(items.get(0)+""+items.get(1));
if(items.size()==3) System.out.println(items.get(0)+""+items.get(1)+""+items.get(2));
if(items.size()==4) System.out.println(items.get(0)+""+items.get(1)+""+items.get(2)+""+items.get(3));
if(items.size()==5) System.out.println(items.get(0)+""+items.get(1)+""+items.get(2)+""+items.get(3)+""+items.get(4));
if(items.size()==6) System.out.println(items.get(0)+""+items.get(1)+""+items.get(2)+""+items.get(3)+""+items.get(4)+""+items.get(5));

以以下方式使用循环:

String output = "";
for (String s : items) output += s;
System.out.println(output);

for (String s : items)
    System.out.print(s);

for (int i=0; i<items.size(); i++)
    System.out.print(items.get(i));

相关问题