【发布时间】:2015-07-06 15:35:57
【问题描述】:
我有主课:
public class Main {
// args[0] - is path to file with first and last words
// args[1] - is path to file with dictionary
public static void main(String[] args) {
try {
List<String> firstLastWords = FileParser.getWords(args[0]);
System.out.println(firstLastWords);
System.out.println(firstLastWords.get(0).length());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
我有 FileParser:
public class FileParser {
public FileParser() {
}
final static Charset ENCODING = StandardCharsets.UTF_8;
public static List<String> getWords(String filePath) throws IOException {
List<String> list = new ArrayList<String>();
Path path = Paths.get(filePath);
try (BufferedReader reader = Files.newBufferedReader(path, ENCODING)) {
String line = null;
while ((line = reader.readLine()) != null) {
String line1 = line.replaceAll("\\s+","");
if (!line1.equals("") && !line1.equals(" ") ){
list.add(line1);
}
}
reader.close();
}
return list;
}
}
args[0] 是 txt 文件的路径,只有 2 个单词。所以如果文件包含:
тор
кит
程序返回:
[тор, кит]
4
如果文件包含:
т
тор
кит
程序返回:
[т, тор, кит]
2
即使文件包含:
//跳到下一行
回复
ㄧㄧㄧ
程序返回:
[, тор, кит]
1
其中 digit - 是列表中第一个字符串的长度。
所以问题是为什么它要多计算一个符号?
【问题讨论】:
-
来自String#length的文档-docs.oracle.com/javase/7/docs/api/java/lang/…“返回此字符串的长度。长度等于字符串中Unicode代码单元的数量。”
-
那么 that 如何解释 OP 的问题?
-
我不明白对这个问题的反对意见 - 这个人正确地包含了所有相关代码,描述了发生的事情,并描述了他的预期。这几乎是正确代码问题的典型代表。我每天都会看到数十个可怕的代码问题,但没有得到任何反对。请解释你自己,downvoters。
-
您的文件中可能存在某种不可打印的字符。您可以尝试遍历字符串中的每个字符并单独打印出来吗?
-
@erwinbolwidt - 我完全同意;我实际上投了赞成票
标签: java string string-length