java等级到GPA

时间:2012-11-08 08:24:51

标签: java syntax-error

我有一个java应用程序将输入等级A,B,C,D,E和F转换为GPA点,但我有错误不确定错误在哪里,我也可以改进下面的代码,以便用户不用输入等级以外的输入?

    import java.lang.*;
import java.io.*;
import java.util.*;
import java.util.Scanner;

  public class Program
 {
     public static void main(String[] args) 
    {
      Scanner keyboard = new Scanner (System.in);

      String letterGrade = " ";
      double gradePoints;
      boolean error = true;

      System.out.println("Enter A Letter Grade: ");
      letterGrade = keyboard.next();

      if( letterGrade == "A+")
      {
          gradePoints = 4.0;
      }
      else if ( letterGrade == "A")
      {
          gradePoints = 4.0;
      }
      else if( letterGrade == "A-")
      {
          gradePoints = 3.67; 
      }
      else if ( letterGrade == "B+")
      {
          gradePoints = 3.33;
      }
      else if( letterGrade == "B")
      {
          gradePoints = 3.0; 
      }
      else if ( letterGrade == "B-")
      {
          gradePoints = 2.67;
      }
      else if( letterGrade == "C+")
      {
          gradePoints = 2.33; 
      }
      else if ( letterGrade == "C")
      {
          gradePoints = 2.0;
      }
      else if( letterGrade == "F")
      {
          gradePoints = 0.0; 
      }
      else(error)
      {
        System.out.println("Error, you did not enter the correct information");
      }
        if(!error)
        {
        System.out.println("Your grade point(GPA) is " + gradePoints);

        }




    }
 }

4 个答案:

答案 0 :(得分:1)

你必须使用equals()方法检查字符串相等性

if(letterGrade = "A+")

to 

if(letterGrade.equals("A+"))

但是,你要给letterGrad分配“A +”而不检查letterGrad == A +

=是赋值运算符,==是相等运算符(用于检查两个基元是否具有相等的值,或者两个对象引用是否指向同一对象)。 '.ququals()'是java.lang.Object()类中的一个方法,用于检查两个对象是否等于。

答案 1 :(得分:1)

第一

您不会将字符串(或其他对象)与==进行比较;您使用equals方法。直接与==比较会告诉您两个对象是否相同,而不是它们的值是否相同。对于字符串,在您的程序中equalsIgnoreCase会更合适。

另外,请注意,比较运算符为==; =是赋值运算符,不检查是否相等; letter = "F"letter中放入一个包含F的新对象。您的错误是由于表达式letter = "F"“返回”正在分配的值(一个字符串保存为“F”)。

if (letter = "F") {

装置

letter <-- new String("F")
if ("F") <-- This does not compile because it expects a boolean (if (true)  or if(false)

关于输入控件,你不能做太多的事情,否则你需要一个GUI。

答案 2 :(得分:0)

以这种方式检查

   else if( letterGrade.equalsIgnoreCase("A-"))
   {
      gradePoints = 3.7; 
   }

其他地方也有变化

如果您想检查用户输入是否有效,可以这样检查

   String grades = "A+B+CDA-";

    if(grades.indexOf("A")==0){
        System.out.println("imhere");
    }

答案 3 :(得分:0)

首先,您的if声明是错误的。

应为if( letterGrade == "A+")

请注意,您应该使用==进行比较。

如果你想比较两个字符串而不是java提供了更好的方法来匹配字符串的内容,因为==运算符比较引用而不是内容。

if(letterGrade.equals("A+"))if( "A+".equals(letterGrade))

如果letterGrade的内容与“A +”匹配,则两者都将返回布尔值(true,如果不匹配,则返回false