这一直困扰着我一段时间。我通常不倾向于求助并做我的研究,但我找不到答案。
如何编写读取文本文件的程序,并计算某个数字出现的次数? 我是Java的初学者,也是一般的编程人员。 这是我的代码。
此代码生成一个包含100个随机数的文本文件
import java.io.*;
public class Rolling
{
public static void main (String[] args) throws IOException
{
int randomNum;
PrintWriter fileout = new PrintWriter (new FileWriter ("randumnums.txt"));
for (int i= 0; i < 101; i++)
{
randomNum = (int) (Math.random() * 100);
fileout.println (randomNum);
}
fileout.close();
}
}
现在我遇到的麻烦是我需要读取文件并编写一个代码,说X号被滚动了3次。例如,数字4在文本文件中出现了5次,所以我需要它打印“数字4被滚动5次”。
import java.io.*;
public class Reading
{
public static void main (String[] args) throws IOException
{
BufferedReader readFile = new BufferedReader (new FileReader ("randumnums.txt"));
int number = 0;
int inMarks [] = new int [100];
for (int i = 0; i < 100; i++)
{
inMarks [i] = Integer.parseInt(readFile.readLine());
}
}
}
答案 0 :(得分:5)
你其实非常接近。很明显,你必须在某种列表中跟踪你的计数,并且数组在这里会做得很好。
首先,在实例化inMarks
之后,将其中的每个值初始化为0:
int inMarks [] = new int [100];
for (int i = 0; i < 100; i++)
{
inMarks [i] = 0;
}
然后将下面的循环更改为:
String nextLine = null;
while ((nextLine = readFile.readLine()) != null)
{
int thisInt = Integer.parseInt(nextLine);
inMarks[thisInt] = inMarks[thisInt] + 1;
}
inMarks
现在可以完美地跟踪每个不同int
在文件中滚动的次数。我将让你实现作业的打印输出部分,因为这样可以让你更好地理解这个解决方案是如何工作的。
答案 1 :(得分:1)
我觉得你正在寻找这样的东西(我没有测试过这段代码)
import java.io.*;
public class Reading {
public static void main (String[] args) throws IOException {
BufferedReader readFile = new BufferedReader (new FileReader("randumnums.txt"));
int number = 0;
int inMarks [] = new int [100];
String readNumber = "";
while ((readNumber = readFile.readline()) != null) {
number = Integer.parseInt(readNumber);
inMarks[number]++;
}
}
}
上面的代码基本上有一个100个整数的数组。然后我们开始读取文件,直到找不到任何东西。每次我们读取一行时,我们都会解析成一个整数(通常你应该绕过一个try ... catch)。然后,我们通过增加数组中的相应索引,将读取此数字的次数增加1。因此,如果您想知道数字'32'出现了多少次,您可以使用System.print.out(inMarks [32]);