-1

我有一个 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

4 回答 4

1

您必须使用 equals() 方法检查字符串是否相等

if(letterGrade = "A+")

to 

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

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

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

于 2012-11-08T08:29:00.130 回答
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。

于 2012-11-08T08:29:31.807 回答
0

以这种方式检查

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

其他地方也有变化

如果要检查用户输入是否有效,可以通过这种方式进行检查

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

    if(grades.indexOf("A")==0){
        System.out.println("imhere");
    }
于 2012-11-08T08:29:11.540 回答
0

首先你的if说法是错误的。

应该是if( letterGrade == "A+")

请注意,您应该==用于比较。

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

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

它们都将返回一个布尔值(true如果 letterGrade 的内容与“A+”匹配,false否则)。

于 2012-11-08T08:29:19.020 回答