微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将阵列从1行更改为20x20正方形? Java

如何解决如何将阵列从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不需要ScannerFile就足够了)。然后每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 举报,一经查实,本站将立刻删除。