如何在第5个数字后开始新行?

问题描述 投票:0回答:3

我想获得一些帮助来解决此问题,因为每五个数字后都要换一行。我将1到90之间的随机数放入数组列表中,然后将其写入文件中。 (稍后,我想对列表和类似的东西进行排序,因此我使用的是ArrayList而不是将数字立即写入文件中。)

public class Lotto {

    static ArrayList<Integer> list = new ArrayList();


    public static void main(String[] args) throws IOException {


          randomNumber();
          fileReader();
    }

    public static void printHeader() {
        System.out.println("Week"
                + "|Numbers                           "
                + "\n"
                + "----+"
                + "-----------------------+");
    }

    public static void randomNumber() {
        int num;
        int n = 5;

      //  String str = String.valueOf(num);

        list = new ArrayList<>();
        try {


            FileWriter writer = new FileWriter("/Users/xyz/desktop/lotto2010.txt");
            BufferedWriter bw = new BufferedWriter(writer);

            for (int i = 1; i <= 260; i++) {
            double number = Math.random() * 90;

            num = (int) number;


            list.add(num);
            if((i % n) == 0) bw.newLine();

            }

            bw.write(list.toString());
            bw.close();

        } catch (IOException ex) {
            System.out.println("Couldn't write the file or directory doesn't exist" + ex.getMessage());
        }
    }

    public static void fileReader() throws IOException {


        FileReader fileReader = new FileReader("/Users/xyz/desktop/lotto2010.txt");
        String allText;
        try (PrintWriter writer = new PrintWriter("/Users/xyz/desktop/lotto2011.txt")) {
            BufferedReader br = new BufferedReader(fileReader);


            allText = br.readLine();

                writer.print(allText);            

        }
        System.out.println(allText);

    }
}
java filereader filewriter
3个回答
0
投票

添加loop,检查i % 5 == 0,添加/nbw.newLine();


0
投票
PsuedoCode : 
for (int i = 0; i < array.size(); i++{
    println(array(i));
    if(i % 5 == 0){
        println();
    }
}

0
投票

这将做有需要的,您正在做的是,在生成数字的同时,您将其添加到列表中,并每隔5个数字同时写一个newline。虽然您应该在遍历数组时执行此操作。在迭代之前,您可以使用sorting或其他任何方法modify数组

FileWriter writer = new FileWriter("/Users/xyz/desktop/lotto2010.txt");
BufferedWriter bw = new BufferedWriter(writer);

for (int i = 1; i <= 260; i++) {
    double number = Math.random() * 90;
    num = (int) number;
    list.add(num);
}

// optional step like sorting, as per your question
Collections.sort(list);

for (int i = 0; i < list.size(); i++) {
     bw.write(list.get(i).toString());
     if(i!=0 && i % n == 0) {
         bw.newLine();
     } else {
         bw.write(", ");
     }
}

bw.close();

获得这样的输出-

9, 10, 10, 10, 11
11, 11, 12, 12, 13
13, 13, 13, 13, 13
14, 14, 14, 14, 15
16, 16, 17, 17, 17
18, 18, 19, 19, 19
19, 20, 21, 21, 21
22, 23, 23, 23, 23
23, 24, 24, 24, 25
26, 26, 26, 26, 26
.............
© www.soinside.com 2019 - 2024. All rights reserved.