从文本文件读取int值,并使用值更改文件内容以分离文本文件。(java)

时间:2019-02-27 01:09:31

标签: java file loops text

因此,我试图从文本文件中读取输入,将其存储到变量中,然后使用该文件中的变量将文本的更改版本输出到另一个文件中。我正在使用Filereader,Scanner和Printwriter来做到这一点。 我必须存储此文本文档的最后一行(是数字),并使用该数字将文本正文乘到另一个文件上,而不包括数字。

因此,文字为: Original file text

输出应该是: desired output

我能够检索该数字并将其存储到我的乘数变量中,并将文本检索到我的字符串中,但是如果我在控制台内检查的话,它会存储为一行: how the text is stored seen through console

因此它在新文件上输出如下: undesired output

我对Java还是很陌生,如果有任何我无法回答的问题可以解决我的代码问题,请原谅我。

我尝试将+"\n"添加到文件输出行,但没有骰子。我还尝试将其添加到 words + = keys.nextLine()+"\n" 中,不幸的是,它分隔了CONSOLE中的行,但没有分隔文件本身。我至少在正确的轨道上吗?

这是我的代码:

public class fileRead {
public static void main(String[] args) throws IOException{
    String words = "" ; //Stores the text from file
    int multiplier = 1; // Stores the number

    FileReader fr = new FileReader("hw3q3.txt");
    Scanner keys = new Scanner(fr);

    //while loop returns true if there is another line of text will repeat and store lines of text until the last line which is an int
    while(keys.hasNextLine())
        if (keys.hasNextInt()) { //validation that will read lines until it see's an integer and stores that number
            multiplier = keys.nextInt(); //Stores the number from text
        } else {
            words += keys.nextLine();//Stores the lines of text
            keys.nextLine();
        }
    keys.close();
    PrintWriter outputFile =  new PrintWriter("hw3q3x3.txt");
    for(int i = 1; i <= multiplier; i++) {
        outputFile.println(words);

    }
    outputFile.close();
    System.out.println("Data Written");
    System.out.println(multiplier);//just to see if it read the number
    System.out.println(words); //too see what was stored in 'words'
}

}

1 个答案:

答案 0 :(得分:0)

请参见下面的if语句:

  // Here is where I need to remove from the array the condition met
  const filterByPassengerCardId = passengersData => {
    remove(passengersData, info => {
      return info.id === passengerCardId;
    });
  };

基本上,在文件中句子中的最后一个词之后,我们要添加换行符以开始从换行中写入下一个句子。

上面的if语句通过确定words += keys.nextLine(); //Stores the lines of text if(words.endsWith(words.substring(words.lastIndexOf(" ")+1))) { //detect last word in sentence words += '\n'; //after last word, append newline } ... for(int i = 1; i <= multiplier; i++) { outputFile.print(words); //change this to print instead of println } 字符串中的最后一个单词,然后在words字符串中添加换行符来检测句子的结尾。这将产生您期望的结果。

为您简化表达式:

words

返回位于字符串最后一个空格索引处的字符串部分(words.substring(words.lastIndexOf(" ")+1) )加1(substring)-即我们在最后一个空格之后得到单词,这就是硬道理。

整个while循环:

lastIndexOf(" ") + 1