我正在做一个作业,其中我必须创建一个间隔(我已经完成),并从一个文本文件中,读取在该间隔中找到的女孩名称,并将它们放入数组列表中。我还必须阅读所有以字母“ J”开头的男性名字,然后计算以字母“ J”开头的男性出生人数,并打印出该信息。以下是到目前为止的代码:
public static int generateRandomInt(int lowerLimit, int upperLimit) {
int value = lowerLimit + (int)Math.ceil( Math.random() * ((upperLimit - lowerLimit) + 1)); //generates a random number between 1 and 10
return value;
}// end generateRandomInt
public static void main(String[] args) {
// Read from filename: top20namesNM1994.txt
// Generating a interval, the lower random number comes from 50 to 100, and the upper random number comes from 150 to 200.
// Print out this interval
// Read all the girls names, which birth numbers are inside of the interval you construct, into a array or ArrayList.
// Print out the array.
//Print out all the males names, which start with letter "J".
//Determine how many male births start with names starting with the letter "J", and print out the summary information.
final int LOW1 = 50;
final int LOW2 = 100;
final int HIGH1 = 150;
final int HIGH2 = 200;
ArrayList<String>girlNames = new ArrayList<String>();
String line = "";
int interval_low = generateRandomInt(LOW1, LOW2);
int interval_high = generateRandomInt(HIGH1, HIGH2);
System.out.println("The interval is ( " + interval_low + " , " + interval_high + " )" );
try {
FileReader inputFile = new FileReader("C:\\Users\\drago\\eclipse-workspace-Ch6to7FinalExam2\\MorrisJFinalExam2\\src\\top20namesNM1994.txt");
//Scanner scan = new Scanner (inputFile);
BufferedReader br = new BufferedReader(inputFile);
while((line = br.readLine()) != null) {
line.split("\\s+");
if()
girlNames.add();
}
}
catch(IOException e) {
System.out.println("File not Found!");
}
if()
System.out.println(girlNames.toString());
}
我坚持如何获得在创建的时间间隔内的女孩名字,以及如何读取男孩名字。附件是文本文件。 TextFile
答案 0 :(得分:0)
好的...您知道如何读取文本文件(有点),这很好,但是您可以稍微简化一下代码:
ArrayList<String> girlNames = new ArrayList<>();
String filePath = "C:\\Users\\drago\\eclipse-workspace-Ch6to7FinalExam2\\"
+ "MorrisJFinalExam2\\src\\top20namesNM1994.txt";
String line = "";
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
while ((line = br.readLine()) != null) {
// .....................
// ..... Your Code .....
// .....................
}
}
catch (IOException ex) {
ex.printStackTrace();
}
在这里使用Try With Resources是为了自动关闭 BufferedReader 。如果您要做的只是读取所需的文本文件,那么您在代码中注释掉的Scanner对象如果使用得当,也是读取文本文件的不错选择。
从您不完整的代码中可以明显看出,该文件中的每个数据行都是空白或 Tab ,它们仅基于Regular Expression({{1 }})在String#split()方法中使用("\\s+"
表达式将在字符串中包含的任意多个空格和或制表符上分割字符串)。 请注意,但是您使用String#split()方法的代码行未正确完成。...如果阅读链接的教程,您会发现此方法用于填写String Array很好,因为 通常 ,这就是您要处理的文件数据行。当然,这样做可以使您从每个数据文件行中检索所需的确切数据部分。
这里没有人知道您的特定数据文本文件中包含什么,因为与许多其他文件一样,其中的内容显然超速分类,即使是虚构的数据也无法满足要求。因此,绝对没有办法为您提供准确的数组索引值或值以用于您的 String Array 从每个数据文件行中检索所需的数据。但是,这很好,因为需要解决的是您,一旦完成,您就将任务打倒提交了。