到目前为止,这是我的代码(已经更新):
import java.util.Scanner;
public class gpa {
public static void main(String[] args) {
double gpa=0;
double input = 0;
String grade= "";
int classes =0;
double fail =0;
do
{
System.out.print("Enter Grade (n to quit): ");
Scanner sc = new Scanner(System.in);
grade = sc.nextLine();
grade = grade.toLowerCase();
if (grade.equals("a"))
{
input = 4.0;
}
if (grade.equals("b"))
{
input = 3.0;
}
if (grade.equals("c"))
{
input = 2.0;
}
if (grade.equals("d"))
{
input = 1.0;
}
if (grade.equals("f"))
{
fail = 1;
}
gpa+=input;
classes++;
} while(grade!="n");
System.out.print("GPA: " + gpa + " ");
gpa/=classes;
if (gpa>=2 && classes >=4 && fail !=1)
{
System.out.print("Eligible");
}
else if(classes <4)
{
System.out.print("Ineligible. less than 4 classes");
}
else if (gpa < 2.0)
{
System.out.print("Ineligible. GPA is less than 2.0");
}
else if (gpa >=2.0 && fail == 1)
{
System.out.print("Ineligible. GPA is above 2.0, but has an F");
}
else if (gpa <2.0 && fail ==1)
{
System.out.print("Ineligible. GPA is below 2.0 and has F");
}
}
}下面是我需要能够输出的内容:
)
它一直在征求意见。我该怎么阻止这一切?我试着把分数转换成一个字符,但这对我来说是个可怕的结局。我想可能是编译器出错什么的。任何帮助都将不胜感激。虽然有帮助可以降低我的血压。
发布于 2011-11-01 01:17:28
您使用的是字符串(对象),而不是char,因此需要使用.equals方法。你需要的不是grade == "a",而是grade.equals("a")。
发布于 2011-11-01 01:17:49
这会让很多新的Java程序员兴奋起来,这是一个非常常见的错误。您需要使用.equals方法,而不是==操作符。见Java String.equals versus ==。
发布于 2011-11-01 01:22:00
除了中断的比较(测试两个字符串是否引用相同的对象,而不是它们的内容在逻辑上是相等的),您还不能将input设置为0 (级别为F ),因此,一个f与前一个级别相同。
当这个人最后输入n时,你仍然做数学来增加分数和增加分数。此外,你从来没有实际计算GPA (你只是加起来的分数)。
https://stackoverflow.com/questions/7961538
复制相似问题