正しい出力を得るためにコードをフォーマットするのに少し問題があります。私はJavaの初心者なので、かなりばかげた間違いを犯したと思いますが、ここに行きます.
入力しているテキストファイルは次のとおりです。
John Smith 90
Barack Obama 95
Al Clark 80
Sue Taylor 55
Ann Miller 75
George Bush 58
John Miller 65
出力ファイルは次のようになります。
John Smith 90
Barack Obama 95
Al Clark 80
Sue Taylor 55
Ann Miller 75
George Bush 58
John Miller 65
Students with excellent grades:
John Smith 90
Barack Obama 95
Students with ok grades:
Al Clark 80
Ann Miller 75
John Miller 65
Students with failure grades:
Sue Taylor 55
George Bush 58
Lowest Grade: Sue Taylor 55
Highest Grade: Barack Obama 95
Average of Grades: 74
Grades in descending order:
John Smith 55
Barack Obama 58
Al Clark 65
Sue Taylor 75
Ann Miller 80
George Bush 90
John Miller 95
私が探している出力はこれです:
出力ファイルは次のようになります。
John Smith 90
Barack Obama 95
Al Clark 80
Sue Taylor 55
Ann Miller 75
George Bush 58
John Miller 65
Students with excellent grades:
John Smith 90
Barack Obama 95
Students with ok grades:
Al Clark 80
Ann Miller 75
John Miller 65
Students with failure grades:
Sue Taylor 55
George Bush 58
Lowest Grade: Sue Taylor 55
Highest Grade: Barack Obama 95
Average of Grades: 74
Grades in descending order:
Barack Obama 95
John Smith 90
Al Clark 80
Ann Miller 75
John Miller 65
George Bush 58
Sue Taylor 55
問題は次のとおりです。
名前 (最初と最後) と最小および最大の成績を印刷する必要があります。
グレードの降順は明らかに昇順なので、修正する必要があります。
また、最後に整理された降順リストの各グレードで印刷する名前 (最初と最後) も必要ですが、現在、名前はグレードと一致しません。
これが私のコードです:
import java.util.Scanner;
import java.io.*;
public class Students
{
public static void main (String[] args) throws IOException
{
String first_name, last_name;
int grade, total=0, count=0;
int min, max;
double average;
int excellentTotal = 0;
int okTotal = 0;
int failureTotal = 0;
Scanner fileInput = new Scanner(new File("students.txt"));
Student st[] = new Student [100];
while (fileInput.hasNext())
{
first_name = fileInput.next();
last_name = fileInput.next();
grade = fileInput.nextInt();
st[count] = new Student(first_name, last_name, grade);
count++;
total = total + grade;
}
for (int i=0; i<count;i++)
{
System.out.println(st[i]);
}
System.out.println("\nStudents with excellent grades:");
for (int i=0; i<count;i++)
{
if (st[i].grade > 89)
{
System.out.println(st[i]);
excellentTotal += st[i].grade;
}
}
System.out.println("\nStudents with ok grades:");
for (int i=0; i<count;i++)
{
if (st[i].grade >=60 && st[i].grade <=89)
{
System.out.println(st[i]);
okTotal += st[i].grade;
}
}
System.out.println("\nStudents with failure grades:");
for (int i=0; i<count;i++)
{
if (st[i].grade < 60)
{
System.out.println(st[i]);
failureTotal += st[i].grade;
}
}
min = st[0].getGrade();
max = st[0].getGrade();
for (int i = 0; i < count; i++)
{
if (max.grade < st[i].grade)
{
max = st[i];
}
if (min.st[i] > st[i].grade)
{
min = st[i].grade;
}
total = excellentTotal + okTotal + failureTotal;
}
System.out.println();
System.out.println("Lowest Grade: " + min);
System.out.println("Highest Grade: " + max);
System.out.println("Average of Grades: " + total/count);
int t, swap = 0;
do
{
swap = 0;
for (int i=0; i<count-1; i++)
{
if (st[i].getGrade()>st[i+1].getGrade())
{
t=st[i].grade;
st[i].grade=st[i+1].grade;
st[i+1].grade=t;
swap++;
}
}
}
while (swap>0);
System.out.println("\nGrades in descending order: ");
for (int i=0; i<count;i++)
{
System.out.print (st[i] + " ");
System.out.println ();
}
}
static class Student
{
private String fname, lname;
private int grade;
public Student(String fname, String lname, int grade)
{
this.fname = fname;
this.lname = lname;
this.grade = grade;
}
public int getGrade()
{
return grade;
}
public void setGrade(int grade)
{
this.grade = grade;
}
public String toString()
{
return fname + " " + lname + "\t" + grade;
}
}
}