我正在尝试使用标准输入并使用它创建一个二维网格。
输入将是:
clear: right;
我想用这些字符创建一个二维字符数组。我在最有效的方式上画了一个空白。我知道可以通过一些不同的for循环来完成,但我对更好的方式感到好奇。
这是我到目前为止,仅仅是开始
n //number of rows and columns
aaaab
bbbba
aaaab
bbbaa
答案 0 :(得分:2)
让他们输入一个字符串。
string.toCharArray()并将其添加到列表中......
char[][] d2char = new char[n][n];
for(int i = 0; i < n; i++) {
string s = scanner.read();
d2char[i] = s.toCharArray();
}
或者如果你有其他地方的字符串做同样的事情只需将字符串作为字符数组添加到char 2d数组。
答案 1 :(得分:0)
首先,as Ya Wang suggests,读取整个字符串并将它们转换为char数组。其次,更重要的是,使用缓冲的阅读器:
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(r.readLine());
char[][] grid = new char[n][];
for(int i = 0; i < n; ++i)
grid[i] = r.readLine().toCharArray();
在java.util.Scanner
上构建System.in
更容易记住,但效率低......当然,如果您逐行手动插入网格,它将没有任何区别(因为它没有区别一次读一整行而不是一个字符)但是如果你试图从一个文件中管出一个巨大的网格并进行一些基准测试,你会注意到它们之间的区别......