Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用文件输入查找两个最高分数_Java - Fatal编程技术网

Java 使用文件输入查找两个最高分数

Java 使用文件输入查找两个最高分数,java,Java,因为我们还没有讨论数组和列表,他说要坚持使用循环和if语句。 我似乎不知道如何让它显示文本文件中两个最高分数的名字。我也不知道如何让它显示两个相同的分数。以下是我迄今为止所做的工作: package lab06; import java.util.*; import java.io.*; public class Lab06 { public static void main(String[] args) throws Exception { Scanner lab06txt =

因为我们还没有讨论数组和列表,他说要坚持使用循环和if语句。 我似乎不知道如何让它显示文本文件中两个最高分数的名字。我也不知道如何让它显示两个相同的分数。以下是我迄今为止所做的工作:

package lab06;

import java.util.*;
import java.io.*;
public class Lab06 {


public static void main(String[] args) throws Exception {
    Scanner lab06txt = new Scanner(new File("Lab06.txt"));
    Scanner duplicateScanner = new Scanner(new File("Lab06.txt"));
    int totalstudents = 0;
    int grade = 0;
    int grade2 = 0;
    int record = 0;       
    int Highest = 0;
    int Highest2 = 0;
    int ACounter = 0;
    int BCounter = 0;
    int CCounter = 0;
    int DCounter = 0;
    int FCounter = 0;
    double average = 0;
    String lastName = "";
    String lastNameHigh = "";
    String lastNameHigh2 = "";
    String firstName = "";
    String firstNameHigh = "";
    String firstNameHigh2 = "";
    while (lab06txt.hasNext()){
        record ++;
        totalstudents++;
        lastName = lab06txt.next();
        firstName = lab06txt.next();
        grade = lab06txt.nextInt();
        {
            average += grade;
            if (grade >= Highest){
                Highest = grade;
                firstNameHigh = firstName;
                lastNameHigh = lastName;
            }                        

        }

        {
        if ((grade >= 90) && (grade <= 100))
        {
           ACounter++;         
        }
        if ((grade >= 80) && (grade <= 89))
        {
           BCounter++;         
        }
        if ((grade >= 70) && (grade <= 79))
        {
           CCounter++;         
        }
        if ((grade >= 60) && (grade <= 69))
        {
           DCounter++;         
        }
        if ((grade < 60))
        {
           FCounter++;         
        }
        if ((grade < 0) || (grade > 100))
        {
            System.out.print("Score is out of bounds in record " + record + ": " + lastName + " "+ firstName + " " + grade + ".\nProgram ending\n");
            return;

        }
       }
    }
    while(lab06txt.hasNext())
    {
        lastName = lab06txt.next();
        firstName = lab06txt.next();
        grade2 = lab06txt.nextInt();           
        if(grade2 > Highest2 && grade2 < Highest){
            Highest2 = grade2;
                firstNameHigh2 = firstName;
                lastNameHigh2 = lastName;
        }
    }


    System.out.println("Total students in class:        " +totalstudents);
    System.out.println("Class average:                  " + average/totalstudents);
    System.out.println("Grade Counters: ");
    System.out.println("A's     B's     C's     D's     F's");
    System.out.printf(ACounter + "%7d %7d %8d %7d\n", BCounter,CCounter,DCounter,FCounter);
    System.out.println("");
    System.out.println("Top Two Students: \n");

    System.out.printf(lastNameHigh + " " + firstNameHigh + "%15d \n", Highest);
    System.out.printf(lastNameHigh2 + " " + firstNameHigh2 + "%15d\n", Highest2);


}
lab06包装;
导入java.util.*;
导入java.io.*;
公共类Lab06{
公共静态void main(字符串[]args)引发异常{
Scanner lab06txt=新扫描仪(新文件(“Lab06.txt”);
Scanner duplicateScanner=新的扫描仪(新文件(“Lab06.txt”);
学生总数=0;
int等级=0;
智力2级=0;
int记录=0;
int最高=0;
int-Highest2=0;
int a计数器=0;
int BCounter=0;
int CCounter=0;
int-DCounter=0;
int FCounter=0;
双平均=0;
字符串lastName=“”;
字符串lastNameHigh=“”;
字符串lastNameHigh2=“”;
字符串firstName=“”;
字符串firstNameHigh=“”;
字符串firstNameHigh2=“”;
while(lab06txt.hasNext()){
记录++;
学生++;
lastName=lab06txt.next();
firstName=lab06txt.next();
grade=lab06txt.nextInt();
{
平均+=等级;
如果(等级>=最高){
最高=等级;
firstName高=firstName;
lastName高=lastName;
}                        
}
{
如果((等级>=90)和&(等级=80)和&(等级=70)和&(等级=60)和&(等级100))
{
System.out.print(“记录“+record+”:“+lastName+”“+firstName+”“+grade+”\n程序结束时的分数超出范围”);
返回;
}
}
}
while(lab06txt.hasNext())
{
lastName=lab06txt.next();
firstName=lab06txt.next();
grade2=lab06txt.nextInt();
如果(2级>最高2级和2级<最高){
最高2级=2级;
firstNameHigh2=firstName;
lastNameHigh2=lastName;
}
}
System.out.println(“全班学生:+totalstudents”);
System.out.println(“班级平均:+平均/学生总数”);
System.out.println(“等级计数器:”);
System.out.println(“A的B的C的D的F的”);
System.out.printf(一个计数器+%7d%7d%8d%7d\n“,b计数器,c计数器,d计数器,f计数器);
System.out.println(“”);
System.out.println(“前两名学生:\n”);
System.out.printf(lastNameHigh+“”+firstNameHigh+“%15d\n”,最高);
System.out.printf(lastNameHigh2+“”+firstNameHigh2+“%15d\n”,最高位2);
}

}

代码的两个部分:

firstName = firstNameHigh;
lastName = lastNameHigh;
应该是:

firstNameHigh  = firstName;
lastNameHigh = lastName;

代码的两个部分:

firstName = firstNameHigh;
lastName = lastNameHigh;
应该是:

firstNameHigh  = firstName;
lastNameHigh = lastName;

请学习类、方法和属性名称的通用(特别是用于名称的大小写)并一致使用它们。您混淆了变量的赋值。看看这一行,例如
firstName=firstNameHigh应该是另一种方式。谢谢!真不敢相信这么简单啊哈哈。请学习类、方法和属性名称的通用(特别是用于名称的大小写)并一致使用它们。您混淆了变量的赋值。看看这一行,例如
firstName=firstNameHigh应该是另一种方式。谢谢!真不敢相信这么简单啊哈哈,谢谢你!这修复了显示名称的问题。但现在我遇到了另一个问题。对于分数,第二高的分数显示为97,而第二高的分数实际为98。还有,我该如何让它显示重复的分数。不使用数组查找重复项会有点乏味,但您可以使用一种方法或一段代码来创建一个新的scanner duplicateScanner=new scanner(新文件(“Lab06.txt”);看看当前的数字是否出现了2次或更多次,使之成为一个重复是的,我被卡住了。在我的教授提供的样本中显示:前两名学生:Glaude Jeanette 99 Florez Katarzyna 98。但由于某种原因,我的代码无法分配正确的第二高分,所以我得到了Glaude Jeanette 99 Klein Harry 97。我也会试一试,看看会发生什么。当你找到第二高的分数时,如果(grade>Highest2&&grade