首页 > 解决方案 > Java - 将用户输入转换为二维整数数组

问题描述

如何转换用户输入(第一个输入是大小):

4
1 2
3
3
-1

相当于:

int graph[][] = {{1,2},{3},{3},{}};

我的尝试是:

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        int graph2[][] = {{1,2},{3},{3},{}};
        int graph[][] = new int[n][n];

        for (int i = 0; i < n; i++) {
                int counter = 0;
                char[] arr = sc.nextLine().toCharArray();
                for (char c : arr){
                    graph[i][counter++] = (int)c-48;
                }

        }
        System.out.println(Arrays.deepToString(graph2));
        System.out.println(Arrays.deepToString(graph));

但是,我必须输入没有空格:

4
12
3
3

输出是:

Need it in : [[1, 2], [3], [3], []]
Crrent Output : [[0, 0, 0, 0], [1, 2, 0, 0], [3, 0, 0, 0], [3, 0, 0, 0]]

标签: javamultidimensional-arraydata-structuresgraphtree

解决方案


一些简单的代码:

import java.util.Arrays;
import java.util.Scanner;

public class Array2D {
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int size = in.nextInt();
    //consume the extra line
    in.nextLine();  
    int[][] array = new int[size][];
    for(int i = 0 ;i <size; i++) {
        String line = in.nextLine();
        array[i] = toIntArray(line.split(" "));
    }
}

public static int[] toIntArray(String[] arr){
    int intArray[] = new int[arr.length];
    for(int i=0;i<arr.length;i++) {
        intArray[i] = Integer.parseInt(arr[i]);
    }
    return intArray;
}

}


推荐阅读