이것은 내 개인적인 프로젝트로, 최종 학년을 계산하는 프로그램을 만들려고 노력하고 있으며 최선의 노력을 다했다고 생각합니다. 내 전체 프로그램이 작동 코드로 업데이트되었습니다 :자바 최종 학년 계산기
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