-1

入力グレードA、B、C、D、E、FをGPAポイントに変換するJavaアプリケーションがありますが、どこに間違いがあるのか​​わからないというエラーがあります。また、ユーザーが他の入力を入力しないように以下のコードを改善する方法もあります。グレードより?

    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+"))

ただし、letterGrad == A +かどうかをチェックせずにletterGradに「A +」を割り当てています

=代入演算子、==等値演算子 (2 つのプリミティブの値が等しいかどうか、または 2 つのオブジェクト参照が同じオブジェクトを指しているかどうかを確認するため) です。「.equals()」は、2 つのオブジェクトが等しいかどうかをチェックするために使用される java.lang.Object() クラスのメソッドです。

于 2012-11-08T08:29:00.130 に答える
1

初め

==文字列 (または他のオブジェクト) を;と比較しません。メソッドを使用しますequals。と直接比較すると==、値が同じかどうかではなく、両方のオブジェクトが同じかどうかがわかります。文字列の場合、あなたのプログラムequalsIgnoreCaseではより適切です。

また、比較演算子は==; =は代入演算子であり、等しいかどうかはチェックしません。を保持する新しいオブジェクトをletter = "F"入れます。あなたのエラーは、式が割り当てられている値(「F」を保持する文字列)を「返す」ためです。letterFletter = "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+")

==比較のために使用する必要があることに注意してください。

==また、2 つの文字列を比較したい場合は、演算子が内容ではなく参照を比較するため、文字列の内容に一致する Java よりも優れた方法を提供します。

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

どちらもブール値を返します ( trueletterGrade の内容が「A+」と一致するfalse場合とそうでない場合)。

于 2012-11-08T08:29:19.020 に答える