java - 限制Java文件中的输入数量

标签 java file-io io terminate

在这个程序中,我试图随机生成姓名、机场目的地/到达地点以及他们飞往那里的日期和时间。当文件中的行数超过 10000 个条目且少于 100,000 个条目时,我在终止程序时遇到问题。我想出的解决方案之一是创建一个名为minimumInputs 的数组。这等于可用机场的数量。在 FlightManifest 方法中,我确保添加的条目数等于为给定飞机生成的座位数。我只是不知道如何在每个机场文件达到 10,000 但不超过 100,000 个条目时停止它。感谢大家的帮助!

编辑:已修复!这是用于解决问题的已编辑的 while 循环。

while (minimumInputs[0] < numberOfEntries && minimumInputs[1] < numberOfEntries && minimumInputs[2] < numberOfEntries && minimumInputs[3] < numberOfEntries && minimumInputs[4] < numberOfEntries && minimumInputs[5] < numberOfEntries && minimumInputs[6] < numberOfEntries && minimumInputs[7] < numberOfEntries && minimumInputs[8] < numberOfEntries && minimumInputs[9] < numberOfEntries && minimumInputs[10] < numberOfEntries && minimumInputs[11] < numberOfEntries && minimumInputs[12] < numberOfEntries && minimumInputs[13] < numberOfEntries && minimumInputs[14] < numberOfEntries && minimumInputs[15] < numberOfEntries && minimumInputs[16] < numberOfEntries && minimumInputs[17] < numberOfEntries && minimumInputs[18] < numberOfEntries && minimumInputs[19] < numberOfEntries && minimumInputs[20] < numberOfEntries && minimumInputs[21] < numberOfEntries && minimumInputs[22] < numberOfEntries && minimumInputs[23] < numberOfEntries && minimumInputs[24] < numberOfEntries) {
            flightManifest();
        }

import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class OLE1 {

    static String[] airports = {"LAX", "MSP", "FAR", "ATL", "ORD", "DFW", "DEN", "JFK", "SFO", "CLT", "LAS", "PHX", "IAH", "MIA", "PEK", "CAN", "HND", "HKG", "SIN", "LHR", "CDG", "LGW", "MUC", "FRA", "EDI"};
    static final int numberOfEntries = 10000;
    static String[] firstNames = {"Isis", "Donnette", "Reyes", "Willis", "Kathy", "Elizbeth", "Long", "Jim", "Devorah", "Magda", "Maryetta", "Keturah", "Corrinne", "Shena", "Xiao", "Otha", "Hallie", "Pennie", "Dong", "Kristopher", "Eveline", "Ardella", "Tien", "Tianna", "Loren", "Many", "Anjelica", "Cecile", "Mae", "Jenae", "Sonya", "Dotty", "Florance", "Mittie", "Katia", "Nena", "Lu", "Janee", "Armando", "Leandro", "Claris", "Claudine", "Moriah", "Eddie", "Susan", "Rhoda", "Monnie", "Emelia", "Cory", "Ying"};
    static String[] lastNames = {"Belva", "Nam", "Liz", "Jeanett", "Corine", "Abe", "Olga", "Olevia", "Ernestine", "Joanne", "Sharyn", "Heidi", "Zachariah", "Sylvester", "Luetta", "Stephaine", "Garrett", "Debby", "Judi", "Noe", "Maybelle", "Eldora", "Roseann", "Madge", "Glayds", "Eleonore", "Josephine", "Quincy", "Alyson", "Earlene", "Clementina", "Jeri", "Kristel", "Carrol", "Zona", "Eileen", "Margherita", "Joline", "Terence", "Christinia", "Eldon", "Arleen", "Aimee", "Chanda", "Carin", "Prudence", "Tanja", "Kathlene", "Kareen", "Geneva"};
    static String[] middleInitial = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
    static int minimumInputs[] = new int[25];
    static int count = 0;

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

        System.out.println("Welcome to the airplane program. This program will go ahead and create a list of all the passengers that have gone through 25 different airports.");
        System.out.println("The list of the airports we keep track of are listed below\n");
        int count = 0;

        //for listing out the airport names
        for (int i = 0; i < 5; i++) {
            System.out.print(airports[count]);
            count++;
            System.out.print(" | " + airports[count]);
            count++;
            System.out.print(" | " + airports[count]);
            count++;
            System.out.print(" | " + airports[count]);
            count++;
            System.out.println(" | " + airports[count]);
            count++;
        }
    /*  
        for (int i = 0; i < 1000; i++) {
            if (flightSeatingAmount() >= 850) {
                System.out.println("check this" + flightSeatingAmount());
            }
            System.out.println(flightSeatingAmount());

        }
    */

        //Need to add it so its not more than 100,000 entries in a file.
        while(minimumInputs[0] < numberOfEntries || minimumInputs[1] < numberOfEntries || minimumInputs[2] < numberOfEntries || minimumInputs[3] < numberOfEntries || minimumInputs[4] < numberOfEntries || minimumInputs[5] < numberOfEntries || minimumInputs[6] < numberOfEntries || minimumInputs[7] < numberOfEntries || minimumInputs[8] < numberOfEntries || minimumInputs[9] < numberOfEntries || minimumInputs[10] < numberOfEntries || minimumInputs[11] < numberOfEntries || minimumInputs[12] < numberOfEntries || minimumInputs[13] < numberOfEntries || minimumInputs[14] < numberOfEntries || minimumInputs[15] < numberOfEntries || minimumInputs[16] < numberOfEntries || minimumInputs[17] < numberOfEntries || minimumInputs[18] < numberOfEntries || minimumInputs[19] < numberOfEntries || minimumInputs[20] < numberOfEntries || minimumInputs[21] < numberOfEntries || minimumInputs[22] < numberOfEntries || minimumInputs[23] < numberOfEntries || minimumInputs[24] < numberOfEntries) {
            flightManifest();
        }

        System.out.println("The files have been compiled.");

    }

    public static int flightSeatingAmount() {
        int flight = (int)(50 + (Math.random() * 800));
        return flight;
    }

    public static String nameGenerator() {
        String names = "";
        int firstAndLast = (int)(Math.random() * 50);
        int initial = (int)(Math.random() * 26);
        names = lastNames[firstAndLast] + "," + firstNames[firstAndLast] + "," + middleInitial[initial];
        return names;
    }

    public static int airportSelectionOne() {
        int airportOne = (int)(Math.random() * (25 - 1));
        return airportOne;
    }

    public static int airportSelectionTwo() {
        int airportTwo = (int)(Math.random() * (25 - 1));
        return airportTwo;
    }

    public static int flightTimeIntervalMinutes() {
        int timing[] = {15, 30, 45, 00};
        int randomTiming = (int)(Math.random() * 4);
        return timing[randomTiming];
    }

    public static int flightTimeIntervalHours() {
        int timing = (int)(Math.random() * 24);
        return timing;
    }

    public static int flightDuration() {
        int duration = 0;

        if (airportSelectionOne() >= 0 && airportSelectionOne() <= 13 && airportSelectionTwo() >= 14 && airportSelectionTwo() <= 18) {
            duration = 22;
        }   
        if (airportSelectionOne() >= 0 && airportSelectionOne() <= 13 && airportSelectionTwo() >= 19 && airportSelectionTwo() <= 24) {
            duration = 9;
        }
        if (airportSelectionOne() >= 14 && airportSelectionOne() <= 18 && airportSelectionTwo() >= 0 && airportSelectionTwo() <= 13) {
            duration = 22;
        }
        if (airportSelectionOne() >= 14 && airportSelectionOne() <= 18 && airportSelectionTwo() >= 19 && airportSelectionTwo() <= 24) {
            duration = 10;
        }
        if (airportSelectionOne() >= 19 && airportSelectionOne() <= 24 && airportSelectionTwo() >= 0 && airportSelectionTwo() <= 13) {
            duration = 9;
        }
        if (airportSelectionOne() >= 19 && airportSelectionOne() <= 24 && airportSelectionTwo() >= 14 && airportSelectionTwo() <= 18) {
            duration = 10;
        }
        if (airportSelectionOne() >= 0 && airportSelectionOne() <= 10 && airportSelectionTwo() >= 0 && airportSelectionTwo() <= 13) {
            duration = 3;
        }
        if (airportSelectionOne() >= 14 && airportSelectionOne() <= 18 && airportSelectionTwo() >= 14 && airportSelectionTwo() <= 18) {
            duration = 2;
        }
        if (airportSelectionOne() >= 19 && airportSelectionOne() <= 24 && airportSelectionTwo() >= 19 && airportSelectionTwo() <= 24) {
            duration = 2;
        }

        return duration;
    }


    public static void flightManifest() throws IOException {

        String departure = airports[airportSelectionOne()];
        String arrival = airports[airportSelectionTwo()];

        PrintWriter outputFileDeparture = new PrintWriter(new FileWriter(departure.toLowerCase() + ".txt", true));
        PrintWriter outputFileArrival = new PrintWriter(new FileWriter(arrival.toLowerCase() + ".txt", true));

        minimumInputs[airportSelectionOne()] = minimumInputs[airportSelectionOne()] + flightSeatingAmount();
        minimumInputs[airportSelectionTwo()] = minimumInputs[airportSelectionTwo()] + flightSeatingAmount();
        int day = (int)(Math.random() * 21);

        int flightHours = flightTimeIntervalHours();
        int flightMinutes = flightTimeIntervalHours();

        for (int i = 0; i <= flightSeatingAmount(); i++) {
            String passengersName = nameGenerator();
            int arrivalHour = (flightHours + flightDuration());

            if(arrivalHour > 24) {
                arrivalHour = arrivalHour - 24;
            }

            outputFileDeparture.println(passengersName + "," + "0" + "," + departure + "," + String.format("%02d", day) + flightHours + flightMinutes);
            outputFileArrival.println(passengersName + "," + "1" + "," + arrival + "," + String.format("%02d", day) + (flightHours + flightDuration()) + flightMinutes);
            //System.out.println(count);
            //count++;
        }

        outputFileDeparture.close();
        outputFileArrival.close();
    }

}

最佳答案

我还没有足够的代表发表评论:(

你不能使用 do-while 循环吗?您可以重写最小整数的数学方法并修改该方法,以便它适合您的喜好。然后对最大数量执行相同的操作。然后说 while (num > min && < max)

我不确定这是否 100% 合理,但它可能有效......

关于java - 限制Java文件中的输入数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21618417/

相关文章:

java - 这段代码如何在没有任何插入语句的情况下在 MySQL 中创建一条新记录?

java - Junit测试后临时文件没有被删除

linux - 使用内存映射的IO时调用ioread函数有什么好处

Java保存配置文件,多操作系统

python - 在 python 中打开 .mat 文件时出错

java - 如何使用 Spring SAML 扩展在 SAML 单注销请求中包含 relayState 参数

java - Hello World 多个按钮单独操作

java - 使用逗号分隔坐标的扫描仪 NextInt()

java - 如何将文件保存为 .rtf 格式

linux - 如果指向的文件被移动或删除,Linux 上打开的文件句柄会发生什么