在这个程序中,我只是从文件中获取输入并尝试从中获取男孩名称和女孩名称,并将它们放在单独的文件中。正如书中所述,我已经做了一切。而且我也在网上到处寻找帮助,但似乎找不到任何有同样问题的人。我已经看到了问题,其中它不是-1而是一个正数,因为它们远远超出字符串,调用字符串长度的子字符串。但似乎无法弄清楚这给我-1,因为我的价值是1.
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.ArrayList;
public class Homework_11_1 {
public static void main(String[] args)throws FileNotFoundException
{
File inputFile = new File("babynames.txt");
Scanner in = new Scanner(inputFile);
PrintWriter outBoys = new PrintWriter("boys.txt");
PrintWriter outGirls = new PrintWriter("girls.txt");
while (in.hasNextLine()){
String line = in.nextLine();
int i = 0;
int b = 0;
int g = 0;
while(!Character.isWhitespace(line.charAt(i))){ i++; }
while(Character.isLetter(line.charAt(b))){ b++; }
while(Character.isLetter(line.charAt(g))){ g++; }
String rank = line.substring(i);
String boysNames = line.substring(i, b);
String girlsNames = line.substring(b, g);
outBoys.println(boysNames);
outGirls.println(girlsNames);
}
in.close();
outBoys.close();
outGirls.close();
System.out.println("Done");
}
}
这是txt文件
1 Jacob Sophia
2 Mason Emma
3 Ethan Isabella
4 Noah Olivia
5 William Ava
6 Liam Emily
7 Jayden Abigail
8 Michael Mia
9 Alexander Madison
10 Aiden Elizabeth
答案 0 :(得分:1)
我会用另一种方式写它,使用split。
public static void main(String[] args)throws FileNotFoundException
{
File inputFile = new File("babynames.txt");
Scanner in = new Scanner(inputFile);
PrintWriter outBoys = new PrintWriter("boys.txt");
PrintWriter outGirls = new PrintWriter("girls.txt");
while (in.hasNextLine()){
String line = in.nextLine();
String[] names = line.split(" "); // wile give you [nbr][boyName][GirlName]
String boysNames = names[1];
String girlsNames = names[2];
outBoys.println(boysNames);
outGirls.println(girlsNames);
}
in.close();
outBoys.close();
outGirls.close();
System.out.println("Done");
}
答案 1 :(得分:0)
我只使用substring()
而不是对循环和String.split(" ")
大惊小怪。当然,作业可能不允许你这样做。
但无论如何,如果没有给你答案,我可以告诉你,你的逻辑错了。走过它,找出原因。如果您尝试仅在输入文件的第一行运行此代码,您将获得以下值:i = 1,b = 0和g = 0。调用line.substring(1,0)
显然不起作用。