【发布时间】:2014-04-18 18:36:06
【问题描述】:
给定输入...
Nathan E Long
Jay L Stevens
Edna J Jackson
Emma Watson
Alexa J Ness
Charles A Miller
我正在尝试编写一次读取一行的代码,将名称分成 3 个标记,然后重新排列这些标记以读取...
Long, Nathan E
Stevens, Jay L
Jackson, Edna J
Ness, Alexa J
Miller, Charles A
另外,如果我得到的代币少于 3 个,我会完全放弃这个名字,比如 Emma Watson。代码...
public class Hmwk {
public static void main(String[] args)throws FileNotFoundException {
Scanner names = new Scanner(new File("input.txt"));
int counter = 0;
while (names.hasNextLine())
{
String nameIn = names.next();
String delims = ("\t");
String[] tokens = nameIn.split(delims);
if (tokens.length != 3)
{
continue; //returns to while loop and gets next line
}
String first = tokens[0];
String middle = tokens[1];
String last = tokens[2];
StringBuilder finalName = builder(first,middle,last);
System.out.println(finalName);
}
}
public static StringBuilder builder(String f, String m, String l)
{
StringBuilder theBuilder = new StringBuilder();
theBuilder.append(l);
theBuilder.append(',');
theBuilder.append(' ');
theBuilder.append(f);
theBuilder.append(' ');
theBuilder.append(m);
return theBuilder;
}
}
文件中的所有名称都由制表符分隔。我的代码运行,但它没有打印出来......任何让我完全困惑的东西。我哪里错了?
【问题讨论】:
-
names.next();应该是names.nextLine(); -
请不要扔 Emma Watson :-)
-
您可能应该提到制表符分隔符。目前我们必须阅读您当前的代码才能确定它是制表符分隔的
-
我经常看到这样的代码,它使用 Scanner 却从未关闭它。扫描仪不应该关闭吗?
标签: java string while-loop append stringbuilder