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

问题描述 投票:-1回答:2

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

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
java arrays arraylist multidimensional-array
2个回答
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 [] []希望这有帮助!


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()

© www.soinside.com 2019 - 2024. All rights reserved.