gpt4 book ai didi

java - 程序计算 txt 文件中数字的频率并将结果保存到另一个 txt 文件中?

转载 作者:行者123 更新时间:2023-12-02 00:00:20 25 4
gpt4 key购买 nike

我正在编写一个程序来计算该数字在 twxt 文件中出现的次数。文本的输入是在运行时给出的。输入存储在文本文件中,现在我必须计算频率并将结果输出到另一个文本文件中。

import java.io.File;
import java.util.Formatter;
import java.util.Scanner;
public class StudentPoll
{

private Scanner x;
int[] frequency = new int[5];
int count =0;
public void openFile(){
try{
x = new Scanner(new File("numbers.txt"));
}
catch(Exception e){
System.out.printf("No File found");
}
}
public void readFile(){
while(x.hasNext()){
int a= x.nextInt();
if(a==1){
frequency[0]=0;
++frequency[0];
break;
}
else if (a== 2){
frequency[1]=0;
++frequency[1];
break;
}
else if( a==3){
frequency[2]=0;
++frequency[2];
break;
}
else if (a==4){
frequency[3]=0;
++frequency[3];
break;
}
else if (a== 5){
frequency[4]=0;
++frequency [4];
break;

}

}


System.out.printf("%s%10s\n","Rating","Frequency");
System.out.printf("%s%10s\n","1",++frequency[0]);
System.out.printf("%s%10s\n","2",++frequency[1]);
System.out.printf("%s%10s\n","3",++frequency[2]);
System.out.printf("%s%10s\n","4",++frequency[3]);
System.out.printf("%s%10s\n","5",++frequency[4]);



}
}


public void closeFile(){
x.close();
}

我应该得到的输出为:

Rating  Frequency
1 1
2 2
3 1
4 1
5 1

但是频率计数不正确。我不知道我在这里犯了什么错误。

我也不知道如何将此输出写入另一个文件。我需要改变什么?

最佳答案

您需要将数组的初始化从循环的 nextInt() 部分中取出。否则,每次找到新数字时,都会将计数重置为零。

更改:

public void readFile(){
while(x.hasNext()){
int a= x.nextInt();
if(a==1){
frequency[0]=0;
++frequency[0];
break;
}

至:

public void readFile(){
while(x.hasNext()){
frequency[0]=0;
frequency[1]=0;
// ... etc etc
int a= x.nextInt();
if(a==1){
++frequency[0];
break;
}

并从循环中删除剩余的频率[x]=0

此外,打印语句中的++Frequency[x] 调用不应该存在。您不希望每次打印列表时都递增。循环遍历数组也比为每个数组都使用一个 printf 更有意义。

关于java - 程序计算 txt 文件中数字的频率并将结果保存到另一个 txt 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14963968/

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