gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:04 24 4
gpt4 key购买 nike

因此,我尝试从文本文件中读取输入,将其存储到变量中,然后使用文件中的变量将该文本的更改版本输出到不同的文件中。我使用 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'
}

}

最佳答案

请参阅下面的 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
}

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

上面的 if 语句通过确定 words 字符串中的最后一个单词,然后将换行符附加到 words 字符串来检测句子的结尾。这将产生您期望的结果。

为您分解表达式:

words.substring(words.lastIndexOf(" ")+1)

返回位于字符串中最后一个空格索引处的字符串部分 (substring) 加 1 (lastIndexOf("") + 1) - 即我们获取最后一个空格之后的单词,即最后一个单词。

整个 while 循环:

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
if(words.endsWith(words.substring(words.lastIndexOf(" ")+1))) {
words += '\n';
}
}
}

关于java - 从文本文件中读取 int 值,并使用值更改文件内容以分隔文本文件。(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54896519/

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