【发布时间】:2016-10-14 20:27:42
【问题描述】:
所以我编写了一个测试类来测试一个程序,该程序允许我学习课程数量、字母成绩和课程学分,然后在为 3 设计的循环中计算总加权点数、总学分和 GPA最大课程
但是,我需要验证课程数量并证明它会在输入无效和有效输入后运行。
我已经得到它,以便在无效响应后提示用户输入有效数量的课程,但是一旦输入有效响应,程序就会停止而不是像预期的那样运行。谁能告诉我为什么?
这是我的代码:
import java.util.*;
import java.lang.*;
public class ComputeGpa
{
public static void main(String [] args)
{
Gpa grades1 = new Gpa();
Scanner in = new Scanner (System.in);
System.out.println("Enter number of courses: ");
int courses = in.nextInt();
if(courses > 0)
{
int i = 0;
while(i < 3)
{
System.out.println("Please enter a letter grade.");
String letter = in.next();
char result = letter.charAt(0);
System.out.println("How many credits was this class worth?");
int credits = in.nextInt();
grades1.addToTotals(result, credits);
i++;
}
System.out.printf("GPA: %.2f", grades1.calcGpa());
}
else
{
System.out.println("Number of courses must be greater than 0. Please enter a valid number of courses.");
courses = in.nextInt();
}
}
}
输出如下:
Enter number of courses:
-2
Number of courses must be greater than 0. Please enter a valid number of courses.
3
然后程序停止运行。我哪里错了?我认为字母 String 上的 in.next() 可以解决这个问题,但显然我错了。有任何想法吗?
【问题讨论】:
-
这是你有循环的地方。
标签: java testing input output java.util.scanner