-2

我不断收到以下 6 个错误:

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

TestScoresAndGrade.java:41:不兼容的类型

找到:字符

必需:java.lang.String

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

发现:字符

必需:java.lang.String

等级='A'; TestScoresAndGrade.java:45:不兼容的类型

发现:字符

必需:java.lang.String

等级='B'​​;

TestScoresAndGrade.java:47:不兼容的类型

发现:字符

必需:java.lang.String

等级='C';TestScoresAndGrade.java:49:不兼容的类型

发现:字符

必需:java.lang.String

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

发现:字符

必需:java.lang.String

等级='F';6 个错误

----jGRASP楔:进程退出代码为1。 ----jGRASP:操作完成。

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");
   }
}
4

7 回答 7

3

对成绩值使用双引号而不是单引号。尝试

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。" " forString和 ' ' 是 forchar

于 2013-09-12T06:11:21.720 回答
1

不兼容的类型

发生错误是因为您试图将 char 值分配给字符串:

     grade = '?';

您需要使用双引号(""String而不是单引号(')。单引号用于char类型。

相应地更改此字符串和其他字符串形式:

     grade = '?';

     grade = "?";

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

于 2013-09-12T06:09:36.570 回答
0

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

grade = 'A'; //not legal
grade = "A"; //legal

这只是你必须记住的关于 Java 的事情之一。字符是单引号,字符串是双引号。

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

grade.equals("A");
于 2013-09-12T06:08:48.530 回答
0

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

grade = "A";
于 2013-09-12T06:08:54.963 回答
0

grade 被定义为一个字符串,而不是一个字符 - 你应该使用字符串文字,用双引号表示。

例如,grade = 'A'您应该使用. 而不是grade = "A".

于 2013-09-12T06:09:08.500 回答
0

要么改变

String grade; to char grade;

或者

改变

grade = 'F'; to grade = "F";
于 2013-09-12T06:09:20.320 回答
0

请将成绩数据类型更改为 char 或将您的文字放在双引号中而不是单引号中,如下所示

if(ScoreAvg > 100)
             grade = "?";
        else if(ScoreAvg >= 90)
         grade = "A";
于 2013-09-12T06:11:43.133 回答