如何在行中打破一维数组?

时间:2018-12-08 14:39:24

标签: java arrays output

我想将一维数组分解为行。 数组尺寸为50。我需要将数组输出到控制台,每行10个元素。 (lang Java 1.8)谢谢!

public void print() {
    for (int i = 0; i < arr.length; i++) {
        if (i<=9) {
            System.out.print(arr[i] + " ");
        }else {
            System.out.print("\r");
        }
    }
}

样本输出

0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 
etc....

8 个答案:

答案 0 :(得分:2)

您可以从2种不同的角度来看它

  1. 每10个数字,换行:当索引以9结尾时,您将到达10个元素,因此您要打印新行jsonlite

    library(jsonlite)
    
    #convert the JSON into a list of names/values
    values<-fromJSON('{"player_version":"vjs-core-6.9.0-hls-5.8.3-ads-5.1.5-ima-2f3a06d-dash-2.9.3","seconds":0.1,"device_model":"Other","levels":4,"referrer":"https://www.bola.net/","os_version":"7","message":"Unable to request ads from server due to network error.","type":"Video","autoplay_data":true,"target_bitrate":600,"os_name":"Windows","video":true,"ad_tag":"","platform":"web-desktop","video_id":1506205,"cf":"ccfbfd463b8b703bee7fe656073f6299","current_time":5.319523,"level":2,"mse_vp9":true,"visitor_id":"b8f98cdb-d7d6-4f63-b3ac-a73c854a0858","ad_type":"banner","webm_vp8":true,"device_vendor":{},"mse_h264":true,"h264":true,"browser_name":"Firefox","vjs_html5":true,"mse":true,"autoplay":true,"setup_time":0.1,"play_uuid":"716f7fa9-d049-471b-b7de-79df8a2cdccd","autoplay_supported":true,"vjs_mpegurl":false,"app_name":"vidio","video_duration":84,"browser_version":"63.0","player_name":"videojs","batch_uuid":"7d101615-c1a9-449f-aa96-bb0aa6330d38","embed":"true","uuid":"f41a01c3-f8f3-4295-b33c-9873e490c59c","login":false,"batch_full":false,"percentage":10,"ad_uuid":"9eede46b-345e-42e1-89a5-6460df8d8aeb","supported":true,"flash_version":"11,4,402","has_ad":true}')
    
    #convert the list into a data frame where each row is a parameter.
    df<-as.data.frame(unlist(values))
    
  2. 每行打印足够的行数:打印10个元素

    println()

答案 1 :(得分:1)

每行任意数量的元素的代码:

public void print(int elementsPerLine) {
  for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i]);
    if (i % elementsPerLine == 0 && i > 0) {
         System.out.println();
    } else {
        System.out.print(" ");
    }
  }
}

答案 2 :(得分:1)

使用以下代码,

 public static void printResult(int[][] result)
{
    for(int i=0; i<5; i++)
    {
        for(int j=0; j<10; j++)
        {
            System.out.print(result[i][j] + ", ");
        }
        System.out.println();
    }
}

public static int[][] modifyArray( int[] singleArray )
{
    int columns = 10;
    int rows = singleArray.length/10;
    int[][] result = new int[rows][columns];

    for(int i=0; i<rows; i++)
    {
        for(int j=0; j<columns; j++)
        {
            result[i][j] = singleArray[columns*i + j];
        }
    }
    return result;
}


public static void main(String[] args)
{
    int[] singleArray = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50};

    int[][] result = modifyArray( singleArray);
    printResult( result );

}

答案 3 :(得分:0)

您必须使用模运算符 https://en.wikipedia.org/wiki/Modulo_operation

public void print() {
    for (int i = 0; i < arr.length; i++) {
        if (i%10 == 0) {
            System.out.print("\r");
        }else {
            System.out.print(arr[i] + " ");
        }
    }
}

答案 4 :(得分:0)

也许你可以写类似的东西

if (i % 10 == 0)
    System.out.print("\r");
}
System.out.print(arr[i] + " ");

答案 5 :(得分:0)

每次将10个项目的切片放入一个新数组中并打印该数组:

int count = 10;
int iterations = (arr.length / count) +  ((arr.length % count) > 0 ? 1 : 0);
for (int i = 1; i <= iterations; i++) {
    int[] slice = new int[count];
    System.arraycopy(arr, (i - 1) * count, slice, 0, i == iterations ? (array.length % count) : count);
    System.out.println(Arrays.toString(slice));
}

上面的代码适用于count的任何值。

答案 6 :(得分:0)

看看下面的代码:

   public class PrintEach10thElements {

    /**
     * @param args the command line arguments
     */
    static List<Integer> arrays = new ArrayList<>();

    public static void main(String[] args) {

        //create 50 elements in an array
        for (int i = 0; i <= 49; i++) {
            arrays.add(i);
        }

        for (int g = 0; g < arrays.size(); g++) {
            if ( arrays.get(g) % 10 != 0) {
                System.out.print(arrays.get(g) + " ");
            } else {
                System.out.println();
                System.out.print(arrays.get(g) + " ");

            }
        }

    }
}

答案 7 :(得分:0)

如果您不介意使用Guava库,也可以这样做

List<Integer> myList = Arrays.asList(myArray);
System.out.println(Lists.partition(myList, 10).stream()
        .map(subList -> subList.stream()
                               .map( Object::toString )
                               .collect(Collectors.joining(" ")))
        .collect(Collectors.joining("\n")));