为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法从每行的数组中打印出不同数量的元素

有没有办法从每行的数组中打印出不同数量的元素

尚方宝剑之说 2022-06-23 20:26:21
我希望能够在每一行从我的数组中打印出不同数量的元素。 String[] name = {"Alix", "Jack", "Alexis", "Adam", "John", "Lexi",              "George", "Gregory", "Paul", "Bjorn", "Aaron", "Joseph", "Anderson"};         System.out.println(Arrays.toString(name));这个的输出会给我[Alix, Jack, Alexis, Adam, John, Lexi, George, Gregory, Paul, Bjorn, Aaron, Joseph, Anderson]但我希望输出类似于以下内容[Alix, Jack, Alexis][Adam, John, Lexi][George, Gregory][Paul, Bjorn, Aaron, Joseph, Anderson]有没有办法做到这一点?在我的示例中,每行中的元素数量并不是一成不变的,重要的是我可以改变输出中每行中出现的名称数量。谢谢
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

这是一个示例,可让您为每个列表提供大小列表,因此您可以轻松生成您指定的输出,而不必在每个列表中包含 3 个名称:


package com.inlet.ifserver;


import java.util.Arrays;


public class x {


    public static void main(String ...args) {

        String[] name = {"Alix", "Jack", "Alexis", "Adam", "John", "Lexi",

                "George", "Gregory", "Paul", "Bjorn", "Aaron", "Joseph", "Anderson"};


        int[] counts = { 3, 3, 2 };


        int start = 0;

        for (int count : counts) {

            int end = Integer.min(start + count, name.length);

            if (end == start)

                break;

            System.out.println(Arrays.toString(Arrays.copyOfRange(name, start, end)));

            start = end;

        }

        if (start < name.length)

            System.out.println(Arrays.toString(Arrays.copyOfRange(name, start, name.length)));

    }

}

输出:


[Alix, Jack, Alexis]

[Adam, John, Lexi]

[George, Gregory]

[Paul, Bjorn, Aaron, Joseph, Anderson]


查看完整回答
反对 回复 2022-06-23
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

Arrays.copyOfRange的那样是去这里的方式。此示例提供了一个不同块长度的数组,因此它与您问题中的预期输出相匹配。看起来像这样


public static void printInBlocks(String[] arr, int[] blocks) {

    int idx = 0;


    for (int blockSize: blocks) {

        String str = Arrays.toString(Arrays.copyOfRange(name, idx, idx += blockSize));

        System.out.println(str);

    }

}

然后你可以这样称呼Main它


public static void main(String[] args) {

    String[] name = {"Alix", "Jack", "Alexis", "Adam", "John", "Lexi",

            "George", "Gregory", "Paul", "Bjorn", "Aaron", "Joseph", "Anderson"};

    int[] blocks = {3, 3, 2, 5};


    printInBlocks(name, blocks);

}

输出看起来像


[Alix, Jack, Alexis]

[Adam, John, Lexi]

[George, Gregory]

[Paul, Bjorn, Aaron, Joseph, Anderson]

笔记

其中blocks包含每行项目数的总和必须等于项目数name


查看完整回答
反对 回复 2022-06-23
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您可以手动拆分阵列并使用该copyOfRange方法。


import java.util.Arrays;


public class HelloWorld {


     public static void main(String []args){

        String[] name = {"Alix", "Jack", "Alexis", "Adam", "John", "Lexi", 

             "George", "Gregory", "Paul", "Bjorn", "Aaron", "Joseph", "Anderson"};


        int splitArrayForSize = 3; 


        for(int i=0; i< name.length; i+=splitArrayForSize){


            String[] subArray = Arrays.copyOfRange(name, i, 

                                        Math.min(name.length, i + splitArrayForSize));


            String subArrayAsString = Arrays.toString(subArray);

            System.out.println(subArrayAsString);   

        }  

    }

}

输出:


[Alix, Jack, Alexis]

[Adam, John, Lexi]

[George, Gregory, Paul]

[Bjorn, Aaron, Joseph]

[Anderson]

我确信有一种更简单、更实用的方法来实现这一点。我会对这种方法感兴趣。


查看完整回答
反对 回复 2022-06-23
  • 3 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信