これは個人的なプロジェクトで、私の最終的な成績を計算するためのプログラムを作成しようとしています。私はすべてのことを正しいと思っていました。私の全プログラムは作業コードで更新されました。最終学年の電卓in java
FinalGradeCalculator:java.lang.NumberFormatException: For input string: "70 "
:
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);
}
}
}
私はそれが私の番号形式の例外を与えるプログラムを実行します。ここではテキストファイルです:
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
今、私は数形式の例外が何であるかを調べましたが、数50
が整数でない理由を私は理解していません。私はこの問題を解決する助けが必要です、それはインデックスの多分何かと関係しているかもしれません。よく分かりません。
'50'の後にスペースがありませんが、私は、' int型finalsScores = Integer.parseInt(finals.trim())を使用してみました; '、それが働きました。 –
これは、スペースがあったことを意味します。https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim() – Dummy101