您好,我想知道我是否可以获得GPA计算器的帮助。
它需要做的是:
输入内容包括一系列术语,例如学期。
每个学期的录取内容包括该学期内所修课程的成绩和学分。
以下显示的是我收到的错误消息和我的代码,感谢您提前获得的任何帮助或我可以尝试的提示。
终端窗口和错误消息:
import java.util.Scanner;
/*
*
*
*/
public class Prog2 {
public static void main(String args[]) {
Scanner numberInput = new Scanner(System.in);
int numberofClasses = numberInput.nextInt();
Scanner input = new Scanner(System.in);
String [] grade = new String[5];
int [] credit = new int [5];
double totalCredit = 0.0;
double realGrade = 0.0;
double result = 0.0;
while (numberofClasses > 0)
{
for (int x = 0; x < numberofClasses; x++ )
{
grade[x] = input.next();
credit[x] = input.nextInt();
}
for(int x=0;x < numberofClasses; x++ ){
if(grade[x].equals("A+")){
realGrade=4.0;
}
else if(grade[x].equals("A")){
realGrade=4.0;
}
else if(grade[x].equals("A-")){
realGrade=3.67;
}
else if(grade[x].equals("B+")){
realGrade=3.33;
}
else if(grade[x].equals("B")){
realGrade=3.00;
}
else if(grade[x].equals("B-")){
realGrade=2.67;
}
else if(grade[x].equals("C+")){
realGrade=2.33;
}
else if(grade[x].equals("C")){
realGrade=2.00;
}
else if(grade[x].equals("C-")){
realGrade=1.33;
}
result = result+realGrade*credit[x];
totalCredit=totalCredit+credit[x];
}
System.out.println("Summary for term:");
System.out.println("----------------------------------");
System.out.println("Term total grade points: " + result);
System.out.println("Term total credits:" + totalCredit);
System.out.println("GPA:"+result/totalCredit);
}
// This block is getting used later please ignore
System.out.println("Final Summary:");
System.out.println("----------------------------------");
System.out.println(" Overall terms");
System.out.println(" Total grade points: " + result);// this needs to be all );
System.out.println(" Total credits" + totalCredit);//This needs to be all );
System.out.println("Cumulative GPA:"+result/totalCredit);
}
}
答案 0 :(得分:0)
当while循环结束时,numberofClasses仍然包含第一次启动while循环之前输入的值。具体来说,输出行后:
GPA=3.0588...
你点击循环结束,然后返回:
while (numberofClasses > 0)
这是真的。下一个&#34; 3&#34;你输入的内容并没有进入numberofClasses,而是由
选中grade[x] = input.next();
然后&#34; A&#34;
credit[x] = input.nextInt();
引发异常,因为它不是整数。
您需要做的就是在while循环结束时再次询问类的数量:
System.out.println("GPA:"+result/totalCredit);
numberofClasses = numberInput.nextInt();
}
输出:
5
A 3
B 2
C 4
A 5
C 3
Summary for term:
----------------------------------
Term total grade points: 52.0
Term total credits:17.0
GPA:3.0588235294117645
3
A 3
B 5
C 1
Summary for term:
----------------------------------
Term total grade points: 81.0
Term total credits:26.0
GPA:3.1153846153846154
答案 1 :(得分:0)
我建议您查看您的编译器或IDE是否具有“调试”功能。这是一个非常有用的工具,让您可以看到您的程序如何通过您的代码
只是小费......
当您要求输入时,首先打印您要求的内容。当我启动你的程序时,我不知道该怎么做。在提示输入该号码之前,请尝试添加System.out.println("input number of classes you took");
。
这是错的。 (如果你先打印出你要求的东西,那就更明显了。)
在您的计划显示统计数据后,您输入5.但是我相信,您的计划实际上仍然在第22行grade[x] = input.next();
上。
当您输入5时,您的扫描仪正在收到一封信。并抛出异常。
你需要考虑如何逃避这个循环。 while (numberofClasses > 0)
或许使用if语句?否则你的程序会永远循环,永远不会要求新的类号