亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法從每行的數組中打印出不同數量的元素

有沒有辦法從每行的數組中打印出不同數量的元素

尚方寶劍之說 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 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號