我刚开始使用Java,如果我问了一些非常简单的问题,很抱歉。我基本上必须让用户连续地输入整数,一旦他们输入负数,循环就会退出。到目前为止,我编写的代码似乎无法将用户的输入写入我创建的文件,morescore。当我尝试打开文件或从main方法调用它时,它是空白的。我试过在谷歌、youtube和stackoverflow上搜索它,但似乎什么都不起作用。如果能得到任何帮助,我将不胜感激:)
package bufferedreader;
import java.io.*;
import java.util.Scanner;
public class BufferedReader {
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException {
writeToFile("morescores");
processFile("morescores");
}
public static void writeToFile (String filename) throws IOException {
BufferedWriter outputWriter = new BufferedWriter (new FileWriter ("morescores.txt"));
int score = 1;
while (true) {
Scanner reader = new Scanner(System.in);
System.out.print ("Enter a number: ");
score = reader.nextInt();
if (score < 0) {
break;
} else {
outputWriter.write(score);
outputWriter.newLine();
}
}
outputWriter.flush();
outputWriter.close();
}
public static void processFile2 (String filename) throws IOException {
java.io.BufferedReader inputReader = new java.io.BufferedReader(new InputStreamReader (new FileInputStream ("morescores.txt")));
String line;
while ((line = inputReader.readLine()) != null) {
System.out.println (line);
}
inputReader.close();
}
}
更新:我解决了这个问题,哈哈,原来我试图打印一个只能是字符串的整数。实际上,我还有一个后续问题,我还需要找到用户输入的所有数字的平均值。我该怎么做?我如何写一个代码,让程序知道用户输入一个值的次数?我实际上有一个后续问题,我还需要找到用户输入的所有数字的平均值。我该怎么做?我如何编写代码,使程序知道用户输入值的次数
在写入文件之前将int
转换为字符串,以便
outputWriter.write(score);
将是:
outputWriter.write(String.valueOf(score));
如果您想知道为什么必须转换,请先查看文档:https://docs.oracle.com/javase/7/docs/api/java/io/Writer.html#write(int)
你会看到它不是写int
,而是写由int
表示的字符
如果将int值传递给BufferedWriter类的write方法,则它将被视为字符,而不是数字,因此在当前代码中,您编写的任何正数都将转换为有效的字符值,然后将其写入文件。为了实现您的要求,您需要在将int值写入文件之前将其转换为字符串,为此您可以使用以下任何方法:
String.valueOf(score)
Integer.toString(score)