java - 在java中使用文件流时没有得到任何输出
问题描述
我一直在编程作业的这一部分上停留了一段时间,我似乎无法理解出了什么问题。我应该使用扫描仪从输入文件中获取成绩并将它们放入一个数组(而不是 ArrayList)中。然后它应该计算平均值、最大值和最小值,然后将它们打印到一个新的单独的文本文件中。程序运行没有错误,但我的输出文件中没有输出。这是我想太多了吗?请原谅乱码,我稍后会修复它。
import java.util.Scanner;
import java.io.*;
public class GradeStatistics {
public static void main(String[] args) throws FileNotFoundException {
Scanner scanNum = new Scanner(new File("grades.txt"));
double total = 0;
int numStudents = 0;
//traverse the file, counting the number of lines and save into numStudents
while(scanNum.hasNextInt())
{
numStudents += 1;
}
int grades[] = new int[numStudents]; //create grades array
Scanner scan2 = new Scanner("grades.txt");
//populate the array
for(int i = 0; i < grades.length; i++)
{
grades[i] = scan2.nextInt();
}
int max = grades[0];
int min = grades[0];
//find the max and min
for(int i = 0; i < grades.length; i++)
{
total = total + grades[i];
if(grades[i] > max)
max = grades[i];
}
for(int i = 0; i < grades.length; i++)
{
if(grades[i] < min)
min = grades[i];
}
double average = total / grades.length; //calculate the average
//create a new file "results.txt" to print our results
FileOutputStream f = new FileOutputStream("results.txt");
System.setOut(new PrintStream(f));
System.out.printf("The average is: %.2f\n", average);
System.out.println("The minimum is: " + min);
System.out.println("The maximum is: " + max);
scan2.close();
scanNum.close();
}
}
解决方案
这是一个无限循环,因为它不会推进文件指针:
while(scanNum.hasNextInt())
{
numStudents += 1;
}
此行还包含一个错误:
Scanner scan2 = new Scanner("grades.txt");
应该
Scanner scan2 = new Scanner(new File("grades.txt"));
推荐阅读
- mysql - WSO2 Identity Server 的新站,将用户存储更改为 MariaDB,缺少几个表
- javascript - 添加从异步函数一次返回一个的值
- java - 将二进制文件读取为字符串,编辑然后返回到 Android Studio (java) 中的二进制文件
- python - 使用 Selenium 在 python 中查找损坏的链接。未提供架构错误
- php - 在 php 中生成推荐链接时出错
- bash - 使用 bash 提取文本文件中的特定行
- java - 在 lambda 函数中获取接口引用
- java - Eclipse 格式化程序中断点
- jquery - 删除底部多余的空格标签
- c - 我们如何在 GDB 调试期间识别函数是否内联?