gpt4 book ai didi

java - StringTokenizer 不使用新行创建标记

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

我在使用 StringTokenizer 将几行文本分解为单独的标记时遇到问题。输入的文字为

3
monkeys

但是,StringTokenizer 显然将其解释为“3monkeys”。我需要它是“3”和“猴子”。因此,由于我需要将字符串“3”转换为整数,因此会引发 NumberFormatException。

这是我到目前为止的代码。

    Scanner f = new Scanner( new FileInputStream("input.txt" )); // Yes, i have the actual input file path here, but I changed it for this question.
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("output.txt")));

String temp = "";
//String cString = "";

while( f.hasNextLine() ) {
String cString = f.nextLine();
temp += cString;
}
StringTokenizer everythingTokens = new StringTokenizer( temp );
String[] everything = new String[ everythingTokens.countTokens() ];

for( int i = 0; i < everything.length; i++ ) {
everything[ i ] = everythingTokens.nextToken();
}

int numberOfPeople = Integer.parseInt( everything[ 0 ] ); // Line where exception occurs.
out.println( everything[ 0 ] );

错误信息是这样的

Exception in thread "main" java.lang.NumberFormatException: For input string: "3monkeys"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at gift1.main(gift1.java:32)
Java Result: 1

为什么会发生这种情况以及如何解决它?

最佳答案

StringTokenizer not making tokens with new lines

生成的字符串中没有换行符。要改变这一点..

String eol = System.getProperty("line.separator");
...
temp += cString + eol;

最终,我会废弃该代码并重新开始。

  1. 使用StringBuilder而不是String +=
  2. 但是,如果第一行应该是整数,为什么还要将第一行添加到 String 中呢?立即解析它,然后忽略为第一行读取的 String

关于java - StringTokenizer 不使用新行创建标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11605262/

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