如何解决如何将阵列从1行更改为20x20正方形? Java
我需要更改数组的格式设置,使其显示为20x20正方形。关于最佳方法的任何想法吗?
public class MyGrid {
public static void main(String[] args) throws IOException
{
FileReader file = new FileReader("list.txt");
int[] integers = new int [400];
int i=0;
try {
Scanner input = new Scanner(file);
while(input.hasNext())
{
integers[i] = input.nextInt();
i++;
}
input.close();
}
catch(Exception e)
{
e.printstacktrace();
}
System.out.println(Arrays.toString(integers));
}
}
解决方法
try-with-resources
statement很不错;我建议利用它来安全清理。我认为您的FileReader
不需要Scanner
(File
就足够了)。然后每20个值打印一个换行符-否则打印一个空格;然后打印值。喜欢,
int[] integers = new int[400];
try (Scanner input = new Scanner(new File("list.txt"))) {
int i = 0;
while (input.hasNextInt()) {
integers[i] = input.nextInt();
if (i != 0) {
if (i % 20 == 0) {
System.out.println();
} else {
System.out.print(" ");
}
}
System.out.printf("%03d",integers[i]);
i++;
}
} catch (Exception e) {
e.printStackTrace();
}
,
(对我而言)最简单,最快的方法是:
public class MyGrid {
public static void main(String[] args) throws IOException {
FileReader file = new FileReader("list.txt");
int[] integers = new int[400];
int[][] table = new int[20][20];
int m,n,i = 0;
int tableWidth = table[0].length; // 20 in that case
try {
Scanner input = new Scanner(file);
while(input.hasNext()) {
int value = input.nextInt();
integers[i] = value;
m = i / tableWidth; // Row index
n = i % tableWidth; // Column index
table[m][n] = value;
i++;
}
input.close();
} catch(Exception e) {
e.printStackTrace();
}
System.out.println(Arrays.toString(integers));
}
}
此外,此代码将适应任何其他表格大小(例如500、600或4237元素)。
注意:该代码将将数据存储在2D阵列中,但不会在控制台中显示。如果要在读取文件时显示数据,建议您看一下更适应的 @Elliott Frisch 答案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。