【问题标题】:(Java) How can I skip a space when reading from a file? [duplicate](Java) 从文件中读取时如何跳过空格? [复制]
【发布时间】:2020-06-26 11:19:32
【问题描述】:

我试图在退出代码时将单词、词性和定义保存到文件中,然后在下次重新打开代码时将它们读回。这是我的存档:

WordListPrinter.println(name + " " + partOfSpeech + " " + definition);

这是我的阅读代码

while(readFromFile.hasNextLine()){
            String name = readFromFile.next();
            String POS = readFromFile.next();
            String definition = readFromFile.nextLine();
}

每次我运行代码时,它都会在definition 中添加一个空格,因为String definition = readFromFile.nextLine(); 部分从保存行读取" " + definition。我试过了

while(readFromFile.hasNextLine()){
            String name = readFromFile.next();
            String POS = readFromFile.next();
            String useless = readFromFile.next();
            String definition = readFromFile.nextLine();
}

去掉空格,但它去掉了空格和第一个单词的定义。我也尝试了char useless = readFromFile.next().charAt(0);,但这只是将空间保存到useless 并删除了定义的第一个单词。有没有办法让我在不删除第一个单词的情况下扫描并删除空格?

【问题讨论】:

  • readFromFile.nextLine().trim() 呢?
  • 我可以用它把字符串保存到useless吗?
  • trim() 返回一个在开头/结尾没有空格的新字符串。尝试将其保存到definition
  • 成功了,谢谢!您应该将其添加为答案吗?

标签: java java.util.scanner


【解决方案1】:

“问题”来自于混合 next()nextLine() 调用,是“预期行为”。 (javadoc)

摆脱空白:

  • 您可以(如果适用)始终如一地使用next()(没有nextLine()) ,所以:

    String definition = readFromFile.next();
    
  • String.trim 是“从不出错”(从字符串中删除尾随空格):

    String definition = readFromFile.nextLine().trim();
    

【讨论】:

  • 使用next() 无效,因为定义超过一个字,但trim() 有效。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多