Java 考试成绩和等级

Java 考试成绩和等级,java,compiler-errors,Java,Compiler Errors,我不断发现以下6个错误: ----jGRASP exec:javac-g TestScoresAndGrade.java TestScoresAndGrade.java:41:不兼容类型 找到:char 必需:java.lang.String 等级='?'; TestScoresAndGrade.java:43:不兼容类型 找到:char 必需:java.lang.String 等级=‘A’; TestScoresAndGrade.java:45:不兼容类型 找到:char 必需:java.la

我不断发现以下6个错误:

----jGRASP exec:javac-g TestScoresAndGrade.java

TestScoresAndGrade.java:41:不兼容类型

找到:char

必需:java.lang.String

等级='?'; TestScoresAndGrade.java:43:不兼容类型

找到:char

必需:java.lang.String

等级=‘A’; TestScoresAndGrade.java:45:不兼容类型

找到:char

必需:java.lang.String

等级=‘B’

TestScoresAndGrade.java:47:不兼容类型

找到:char

必需:java.lang.String

等级=‘C’; TestScoresAndGrade.java:49:不兼容类型

找到:char

必需:java.lang.String

等级='D'; TestScoresAndGrade.java:51:不兼容类型

找到:char

必需:java.lang.String

等级=‘F’; 6个错误

----jGRASP楔块:流程的退出代码为1----jGRASP:操作 完成


当您使用单引号时,您正在为字符串分配字符文字。”

grade = 'A'; //not legal
grade = "A"; //legal
这只是关于Java你必须记住的事情之一。字符是单引号,字符串是双引号

但请记住,字符串是对象,必须正确比较。不能只对字符串执行
s==r
。要比较字符串,请编写

grade.equals("A");

字符串文字使用双引号,因此:

grade = "A";

等级定义为字符串,而不是字符-应该使用字符串文字,用双引号表示

例如,您应该使用
grade=“A”
,而不是
grade=“A”

String grade; to char grade;

改变

grade = 'F'; to grade = "F";
不兼容类型

发生错误,因为您正在尝试将字符值分配给字符串:

     grade = '?';
您需要将双引号(
)与
字符串一起使用,而不是单引号(
)。单引号用于
char
类型

相应地将此字符串和其他字符串更改为:

     grade = '?';


或者您可以将
grade
类型更改为
char
,而不是
String

使用双引号而不是单引号表示成绩值。试一试

import java.util.Scanner;

public class TestScoresAndGrade
{
   public static void main(String[] args)
   {

    Scanner keyboard = new Scanner(System.in); 

      int score1;
      int score2;
      int score3;
      double ScoreAvg;
      String grade;


      System.out.print("Enter the first score: ");
                score1 = keyboard.nextInt();

        System.out.print("Enter the second score: ");
                score2 = keyboard.nextInt();

       System.out.print("Enter the third score: ");
                score3 = keyboard.nextInt();

        ScoreAvg = (score1 + score2 + score3)/ 3.0;
      ScoreAvg = Math.round(ScoreAvg);

        if(ScoreAvg > 100)
             grade = "?";
        else if(ScoreAvg >= 90)
         grade = "A";
      else if(ScoreAvg >= 80)
         grade = "B";
        else if(ScoreAvg >= 70)
         grade = "C";
      else if(ScoreAvg >= 60)
         grade = "D";
      else
         grade = "F";

      System.out.println("Average score: " + ScoreAvg + " " + grade + "\n");
   }
}

这是因为等级是
String
而不是
char
。“”表示
字符串
,“”表示
字符

请将成绩数据类型更改为字符,或将文字置于双引号而不是单引号中,如下所示

if(ScoreAvg > 100)
             grade = "?";
        else if(ScoreAvg >= 90)
         grade = "A";

Java有时是一个变化无常的野兽。
import java.util.Scanner;

public class TestScoresAndGrade
{
   public static void main(String[] args)
   {

    Scanner keyboard = new Scanner(System.in); 

      int score1;
      int score2;
      int score3;
      double ScoreAvg;
      String grade;


      System.out.print("Enter the first score: ");
                score1 = keyboard.nextInt();

        System.out.print("Enter the second score: ");
                score2 = keyboard.nextInt();

       System.out.print("Enter the third score: ");
                score3 = keyboard.nextInt();

        ScoreAvg = (score1 + score2 + score3)/ 3.0;
      ScoreAvg = Math.round(ScoreAvg);

        if(ScoreAvg > 100)
             grade = "?";
        else if(ScoreAvg >= 90)
         grade = "A";
      else if(ScoreAvg >= 80)
         grade = "B";
        else if(ScoreAvg >= 70)
         grade = "C";
      else if(ScoreAvg >= 60)
         grade = "D";
      else
         grade = "F";

      System.out.println("Average score: " + ScoreAvg + " " + grade + "\n");
   }
}
if(ScoreAvg > 100)
             grade = "?";
        else if(ScoreAvg >= 90)
         grade = "A";