Java:计算从文本文件扫描的最小值时出现问题

Java:计算从文本文件扫描的最小值时出现问题,java,input,text-files,minimum,Java,Input,Text Files,Minimum,我正在使用的程序从纯文本文件中提取数字,并根据这些数字进行计算。所需的计算之一是总最小值 问题在于,我当前的最小分数变量设置为等于文本文档中当前选定的值。所以,它基本上总是等于最后一个值。或者,如果我不将这两个值设置为彼此相等,那么它总是等于零。问题是,我不知道如何准确地计算最小值 Java代码 公共类考试状态{ 静态最终积分a=90; 静态最终积分b=80; 静态最终值c=70; 静态最终整数d=60; 公共静态void main(字符串[]args)引发FileNotFoundExcepti

我正在使用的程序从纯文本文件中提取数字,并根据这些数字进行计算。所需的计算之一是总最小值

问题在于,我当前的最小分数变量设置为等于文本文档中当前选定的值。所以,它基本上总是等于最后一个值。或者,如果我不将这两个值设置为彼此相等,那么它总是等于零。问题是,我不知道如何准确地计算最小值

Java代码
公共类考试状态{
静态最终积分a=90;
静态最终积分b=80;
静态最终值c=70;
静态最终整数d=60;
公共静态void main(字符串[]args)引发FileNotFoundException{
双倍总和=0;
int numberoftests=0;
双examAverage=0;
int currentScore=0;
双帐户=0;
双B计数=0;
双帐户=0;
双数据计数=0;
双fCount=0;
双孔径=0;
双B参数=0;
双cPercent=0;
双D百分比=0;
双F百分比=0;
int maxScore=0;
int minScore=0;
扫描仪扫描=新扫描仪(System.in);
文件f=新文件(“Grades.txt”);
DecimalFormat twoDecimal=新的DecimalFormat(“#.##”);
DecimalFormat noDecimal=新的DecimalFormat(“#”);
System.out.println(“在此处输入文件名:”);
字符串文件名=scan.nextLine();
扫描仪文件位置=新扫描仪(新文件读取器(文件名));
while(fileLocation.hasNext()){//从文本文件中读取每个条目。
currentScore=fileLocation.nextInt();
考试次数++;
总和+=当前分数;
如果(当前分数>=A){
aCount++;
}
如果(currentScore>=bottomB&¤tScore=bottomC&¤tScore=bottomD&¤tScoremaxScore){
maxScore=currentScore;
}

正在将minScore分配给currentScore

minScore = currentScore;
然后进行比较,但两个变量的值相同,条件永远不会为真

if (currentScore < minScore){
    minScore = currentScore;
}
if(当前分数

如果
,则在
之前删除赋值,程序将按预期工作。

问题在于,在循环的每一次迭代中,使用该行将最小分数设置为当前分数

minScore = currentScore;
如果您更改程序,使这一行在循环之前只执行一次。这也意味着您必须在执行此操作之前检查是否确实存在数据

虽然它适用于非负数,但也值得将行
maxScore=currentScore
放在同一位置,以避免所有分数都小于0时出现问题

编辑:下面的代码“应该”实现我所说的,但是可能有更好的实现方法

//Rest of your program
System.out.println("Enter the name of the file here: ");
String fileName = scan.nextLine();
Scanner fileLocation = new Scanner(new FileReader(fileName));
if (fileLocation.hasNext()) {
    currentScore = fileLocation.nextInt();
    minScore = currentScore;
    maxScore = currentScore;
} else {//Throw an error or something
}
// Rest of the program

然后必须稍微更改循环以适应此情况。将循环更改为测试后循环,并移动行
currentScore=fileLocation.nextInt()
到循环的最后一行将是使其工作的一种方法。

minScore=currentScore
没有条件-这将破坏一切…但是如果所有的值都是,你能提供一个负数的例子,如果(<0),它将计算为false
?我的错,我输入了错误的箭头。如果输入了至少一个负数,minScore将是正确的,如果输入了至少一个正数,则max将是正确的。如果这些条件无法保证,则必须将变量初始化为文件中实际不应该存在的第一个分数,它现在被删除了。然而,主要的问题仍然没有解决,因为minScore等于0是默认值;而且Java不会让我有一个minScore的未初始化变量,因为它正在用于比较。因此,我说,与其删除行,不如找一种方法将其功能移到循环上方,以便minScore被初始化为文件中的第一个值。我回答了错误的人。好的,我将在循环之前尝试将其相等。
//Rest of your program
System.out.println("Enter the name of the file here: ");
String fileName = scan.nextLine();
Scanner fileLocation = new Scanner(new FileReader(fileName));
if (fileLocation.hasNext()) {
    currentScore = fileLocation.nextInt();
    minScore = currentScore;
    maxScore = currentScore;
} else {//Throw an error or something
}
// Rest of the program