在读入所有参数之前,如何延迟对象创建?

时间:2016-09-15 22:33:22

标签: java constructor java.util.scanner

我正在尝试使用多个参数创建自定义对象时遇到问题,但必须首先使用Scanner逐个找到参数。

所以基本上,给定一个输入文件,其中每一行代表一个具有多个属性的新对象(一个带有名称的县,其犯罪索引等),我使用带有while循环的Scanner逐行扫描输入文件,然后在该循​​环内我使用另一个while循环和一个新的Scanner,然后扫描该行中的每个单词。这样,我可以分离所有对象的属性,然后通过将所有这些值传递给构造函数来创建对象。

我无法弄清楚的是如何延迟对象的创建,直到我在每行中包含每个单词,因为输入文件中的每一行都要被制作成一个对象,该行中的每个单词都是用作对象的参数。

有没有人知道如何有效地完成这项工作而无需将所有单词存储到数组或类似的内容中?

这是来自对象类的构造函数,它将获取一行的所有单词,它们都是正确的顺序,并为输入文件中的每一行创建一个新对象:

public CountyItem(String countyName, String countyState, double countyPercentageClintonVoters, double countyResidentMedianAge,
            int countyResidentMeanSavings, int countyPerCapitaIncome, double countyPercentageBelowPovertyLevel,
            double countyPercentageVeterans, double countyPercentageFemale, double countyPopulationDensity, 
            double countyPercentageLivingInNursingHomes, int countyCrimeIndexPerCapita){

        itemCountyName = countyName;
        itemCountyState = countyState;
        itemCountyPercentageClintonVoters = countyPercentageClintonVoters;
        itemCountyResidentMedianAge = countyResidentMedianAge;
        itemCountyResidentMeanSavings = countyResidentMeanSavings;
        itemCountyPerCapitaIncome = countyPerCapitaIncome;
        itemCountyPercentageBelowPovertyLevel = countyPercentageBelowPovertyLevel;
        itemCountyPercentageVeterans = countyPercentageVeterans;
        itemCountyPercentageFemale = countyPercentageFemale;
        itemCountyPopulationDensity = countyPopulationDensity;
        itemCountyPercentageLivingInNursingHomes = countyPercentageLivingInNursingHomes;
        itemCountyCrimeIndexPerCapita = countyCrimeIndexPerCapita;
    }

这是我的程序的主要方法(当然还没有完成),它显示了我正在讨论的计划使用嵌套while循环和两个单独的扫描程序来首先读取输入文件中的每一行然后读取每个单词行:

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

        //Scanner and FileWriter
        Scanner inFile = new Scanner(new FileReader("data/test1.txt"));  //change this to use different test .txt file
        FileWriter outFile = new FileWriter("data/output.txt");

        //loops through each line in inputl.txt until end is reached
        while(inFile.hasNextLine()){
            String line = inFile.nextLine();
            Scanner lineScanner = new Scanner(line);

            //loops through every word in a given line
            while(lineScanner.hasNext()){

            }
            lineScanner.close();
        }
        inFile.close();
    }

1 个答案:

答案 0 :(得分:2)

您可以使用构建器模式慢慢构建构造函数的依赖项,或者您也可以引入另一个接收0的构造函数,并且可以将所有逻辑从main方法移动到该构造函数中。