Dies ist ein persönliches Projekt, nur versucht, ein Programm zu erstellen, um meine Abschlussnote zu berechnen und nach meinem besten Wissen dachte ich, ich habe alles richtig gemacht, hier ist mein gesamtes Programm mit Arbeitscode aktualisiert:Final Grade Rechner in Java
FinalGradeCalculator:
import java.io.*;
import java.util.Scanner;
public class FinalGradeCalculator {
public static final String readInFile = "MUSC110grades.txt";
public static void main(String[] args) {
try
{
Scanner readFile = new Scanner(new File(readInFile));
String longString = "";
while(readFile.hasNextLine())
{
longString = longString.concat(readFile.nextLine()+" ");
}
readFile.close();
int indexQuiz = longString.indexOf("Quizzes");
int indexConcertReports = longString.indexOf("Concert Reports");
int indexMidterm = longString.indexOf("Midterm");
int indexFinal = longString.indexOf("Final");
int indexEnd = longString.indexOf("End");
//Quiz
String quiz = longString.substring(indexQuiz+8, indexConcertReports);
String[] quizList = quiz.split(" ");
int quizScores = 0;
for(int i=0;i<quizList.length;i++)
quizScores += Integer.parseInt(quizList[i]);
//Concert Report
String cR = longString.substring(indexConcertReports+16, indexMidterm);
String[] cRList = cR.split(" ");
int cRScores = 0;
for(int i=0;i<cRList.length;i++)
cRScores += Integer.parseInt(cRList[i]);
//Midterm
String midterm = longString.substring(indexMidterm+8, indexFinal-1);
int midtermScores = Integer.parseInt(midterm);
//Final
String finals = longString.substring(indexFinal+6, indexEnd-1);
int finalsScores = Integer.parseInt(finals);
double quizAvg = Math.ceil(quizScores/quizList.length);
System.out.println("Your Quiz Average is " + quizAvg);
double cRAvg = Math.ceil(cRScores/cRList.length);
System.out.println("Your Concert Report Average is " + cRAvg);
double midtermGrade = Math.ceil(midtermScores);
System.out.println("Your Midterm Grade is " + midtermGrade);
double finalsGrade = Math.ceil(finalsScores);
System.out.println("Your Finals Grade is " + finalsGrade);
double totalGrade = Math.ceil(cRAvg*0.2 + quizAvg*0.35 + midtermGrade*0.2 + finalsGrade*0.25);
System.out.println("Your Total Grade is " + totalGrade);
if(totalGrade >= 90)
System.out.println("Your final grade is A");
else if(totalGrade >= 85)
System.out.println("Your final grade is B+");
else if(totalGrade >= 80)
System.out.println("Your final grade is B");
else if(totalGrade >= 75)
System.out.println("Your final grade is C+");
else if(totalGrade >= 70)
System.out.println("Your final grade is C");
else if(totalGrade >= 65)
System.out.println("Your final grade is D+");
else if(totalGrade >= 60)
System.out.println("Your final grade is D");
else
System.out.println("your final grade is F");
}
catch(Exception e)
{
System.out.println(e);
}
}
}
Wenn ich das Programm führen sie es mir ein Zahlenformat Ausnahme gibt: java.lang.NumberFormatException: For input string: "70 "
. hier ist die Textdatei:
MUSC110grades.txt:
Quizzes
100
100
100
100
100
100
100
100
100
100
100
0
0
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
0
0
100
100
0
0
100
100
100
100
100
100
100
100
100
100
100
100
Concert Reports
100
100
90
90
Midterm
72
Final
70
End
Jetzt habe ich nachgeschlagen, was ein Zahlenformat Ausnahme ist, aber ich verstehe nicht, warum die Zahl 50
nicht eine ganze Zahl ist. Ich brauche Hilfe bei der Lösung dieses Problems, vielleicht hat es etwas mit dem Index zu tun. Ich bin mir nicht sicher.
Es ist kein Raum nach '50' aber ich versuchte, mit' int finalsScores = Integer.parseInt (finals.trim()); 'und das funktionierte. –
Was bedeutet, es gab ein Leerzeichen :) Siehe https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim() – Dummy101