如何将字符串数组的内容存储为二维字符数组?

时间:2019-02-22 19:24:48

标签: java arrays arraylist multidimensional-array

以下代码要求网格大小,然后从键盘获取输入值,并将内容存储在“ str” 中。现在,我想以二维字符存储“ str”的内容名为 char [] []板的数组。我怎么做?请耐心等待,我不熟悉编码。

Scanner s = new Scanner(System.in);

System.out.println("Enter grid size");

int t = s.nextInt(); // read number of elements
s.nextLine(); // consume new line
System.out.println("Enter the values");
int d = s.nextInt(); // read number of elements
s.nextLine();
String str[] = new String[t];
for(int k=0;k<t;k++) {
         str[k]=s.nextLine();
}

样本输出:

Enter grid size
3
Enter the values
123
234
456

2 个答案:

答案 0 :(得分:1)

请确保输入的所有字符串的长度相同,否则将导致错误。创建2D数组时,我们必须指定行和列。为了获得列的大小,我们尝试找到第一个字符串输入的长度。

    Scanner in = new Scanner(System.in) ;
    System.out.println("Enter grid size") ;

    int size = in.nextInt() ;  // size is the total number of incoming strings

    String str = in.next() ;
    int col = str.length()  ; // getting the length of the fisrt string to get column size for the grid

    char grid[][] = new char[size][col] ;
    grid[0] = str.toCharArray() ;  

    for (int i = 1 ; i < size ; i++)
    {
        str = in.next() ; 
        grid[i] = str.toCharArray() ; 
    }

如果您只需要阅读或浏览(而不是编辑/更改)字符串的字符,则可以使用str.charAt(index)方法。您无需创建2D数组char [] [] 希望这可以帮助!

答案 1 :(得分:0)

您需要的是“大概”:

// so far so good...
// not: String str[] = new String[t];, but:
char [][] str = new char[t][];
for(int k=0;k<t;k++) {
     str[k] = s.nextLine().toCharArray();
}

所以:

  1. str的类型更改为char[t][]
  2. 将每个str[k]设置为String.toCharArray();(其中Strings.nextLine())。

请参阅javadoc:String.toCharArray()