以下代码要求网格大小,然后从键盘获取输入值,并将内容存储在“ 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
答案 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();
}
所以:
str
的类型更改为char[t][]
。str[k]
设置为String.toCharArray();
(其中String
是s.nextLine()
)。请参阅javadoc:String.toCharArray()