gpt4 book ai didi

java - StringBuilder 和字符串问题

转载 作者:行者123 更新时间:2023-12-01 23:08:33 25 4
gpt4 key购买 nike

给定输入...

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;
}
}

文件中的所有名称均以制表符分隔。我的代码运行了,但它没有打印出......任何让我完全困惑的东西。我哪里出错了?

最佳答案

首先,Scanner#next()只返回下一个 token 。在默认配置下,标记由空格字符分隔。所以第一次调用

String nameIn = names.next(); 

会返回

Nathan  

拆分时,仅返回长度为 1 的数组。

使用 Scanner#nextLine() 检索所有输入,直到找到新行字符。

其次,您的 token 似乎不是用制表符 \t 分隔的。使用

String delims = ("\\s+");

one or more whitespace characters分割.

关于java - StringBuilder 和字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22388580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com