我试图让let1初始化,同时仍然被我为av1设置的if条件操纵。
import java.util.Scanner;
public class School {
public static void main(String args[]) {
Scanner get=new Scanner(System.in);
//Variables
String Stud1, Stud2, Stud3, Stud4;
int num1S1, num2S1, num3S1, num4S1;
int num1S2, num2S2, num3S2, num4S2;
int num1S3, num2S3, num3S3, num4S3;
int num1S4, num2S4, num3S4, num4S4;
double av1, av2, av3, av4;
char let1,let2,let3,let4;
//Input Student One
System.out.println("Please enter name of first student:");
Stud1=get.next();
System.out.print("Integer grades from 1st to fourth grade:\n");
num1S1=get.nextInt();
num2S1=get.nextInt();
num3S1=get.nextInt();
num4S1=get.nextInt();
//Computing Average
av1= (num1S1+num2S1+num3S1+num4S1)/4.0;
av2= (num1S2+num2S2+num3S2+num4S2)/4.0;
av3= (num1S3+num2S3+num3S3+num4S3)/4.0;
av4= (num1S4+num2S4+num3S4+num4S4)/4.0;
//If Statements for letter grade
if(av1<=50)
let1='F';
if(av1>=60 && av1<=69)
let1='D';
if(av1>=70 && av1<=79)
let1='C';
if(av1>=80 && av1<=89)
let1='B';
if(av1>=90)
let1='A';
//Output
System.out.printf("Studnet Name Grades Average Letter Grade\n");
System.out.printf("%s %1d %1d %1d %1d %1.2f %c \n",Stud1,num1S1,num2S1,num3S1,num4S1,av1,let1);
}
}
答案 0 :(得分:0)
在let1
的声明声明下面尝试此操作let1 = ' ';
答案 1 :(得分:0)
您可以在声明时将let1
初始化为某个任意值。
char let1 = ' ',let2,let3,let4;
或者您可以将if结构更改为if-else结构。如果案例相互排斥,那么这种结构可能更有意义,他们可能就是在这种情况下。此外,如果您在let1
语句中为else
分配值,则编译器应停止抱怨未初始化的值。
示例:
if(av1<=50)
let1='F';
else if(av1>=60 && av1<=69)
let1='D';
/* Your other statements here */
else
let1 = 'A';
您可能也想检查一下条件。您的代码目前不处理平均成绩在51到59之间的情况。