Java 考试成绩和等级
我不断发现以下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:操作 完成 从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
当您使用单引号时,您正在为字符串分配字符文字。”
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";