有人可以帮我解决这个问题吗?
/*
author: M Asad Raza
date: 18/03/2014
*/
Code:-
import java.util.Scanner;
class GPACalculator {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
double sub1,sub2,sub3,sub4,sub5,sub6,subtotal=100*6,obtained,GP;
double gp1,gp2,gp3,gp4,gp5,gp6;
String name;
System.out.println(" \n***Welcome to GPA Calculator***\n");
System.out.print("Enter your good name: ");
name=input.nextLine();
System.out.println("\n**Hello "+name+" :)\n");
System.out.print("Enter Subject#1 marks: ");
sub1=input.nextInt();
if(sub1>100){
System.out.println("Marks exceeded from the limit.\nTry agian..!!");
System.exit(0);
}
if(sub1<45){
System.out.println("Subject failed!!\nGPA can't be calculated.");
System.exit(0);
}
System.out.print("Enter Subject#2 marks: ");
sub2=input.nextInt();
if(sub2>100){
System.out.println("Marks exceeded from the limit.\nTry agian..!!");
System.exit(0);
}
if(sub2<45){
System.out.println("Subject failed!!\nGPA can't be calculated.");
System.exit(0);
}
System.out.print("Enter Subject#3 marks: ");
sub3=input.nextInt();
if(sub3>100){
System.out.println("Marks exceeded from the limit.\nTry agian..!!");
System.exit(0);
}
if(sub3<45){
System.out.println("Subject failed!!\nGPA can't be calculated.");
System.exit(0);
}
System.out.print("Enter Subject#4 marks: ");
sub4=input.nextInt();
if(sub4>100){
System.out.println("Marks exceeded from the limit.\nTry agian..!!");
System.exit(0);
}
if(sub4<45){
System.out.println("Subject failed!!\nGPA can't be calculated.");
System.exit(0);
}
System.out.print("Enter Subject#5 marks: ");
sub5=input.nextInt();
if(sub5>100){
System.out.println("Marks exceeded from the limit.\nTry agian..!!");
System.exit(0);
}
if(sub5<45){
System.out.println("Subject failed!!\nGPA can't be calculated.");
System.exit(0);
}
System.out.print("Enter Subject#6 marks: ");
sub6=input.nextInt();
if(sub6>100){
System.out.println("Marks exceeded from the limit.\nTry agian..!!");
System.exit(0);
}
if(sub6<45){
System.out.println("Subject failed!!\nGPA can't be calculated.");
System.exit(0);
}
//Calculating GPA
if(sub1>=85&&sub1<=100) {
gp1=4.00;
}
if(sub1>=80&&sub1<=84) {
gp1=3.70;
}
if(sub1>=75&&sub1<=79) {
gp1=3.30;
}
if(sub1>=70&&sub1<=74) {
gp1=3.00;
}
if(sub1>=65&&sub1<=69) {
gp1=2.70;
}
if(sub1>=60&&sub1<=64) {
gp1=2.30;
}
if(sub1>=55&&sub1<=59) {
gp1=2.00;
}
if(sub1>=50&&sub1<=54) {
gp1=1.70;
}
if(sub1>=45&&sub1<=49) {
gp1=1.00;
}
//*****sub1 gp1 finished
if(sub2>=85&&sub2<=100) {
gp2=4.00;
}
if(sub2>=80&&sub2<=84) {
gp2=3.70;
}
if(sub2>=75&&sub2<=79) {
gp2=3.30;
}
if(sub2>=70&&sub2<=74) {
gp2=3.00;
}
if(sub2>=65&&sub2<=69) {
gp2=2.70;
}
if(sub2>=60&&sub2<=64) {
gp2=2.30;
}
if(sub2>=55&&sub2<=59) {
gp2=2.00;
}
if(sub2>=50&&sub2<=54) {
gp2=1.70;
}
if(sub2>=45&&sub2<=49) {
gp2=1.00;
}
//***** sub2 gp2 finished
if(sub3>=85&&sub3<=100) {
gp3=4.00;
}
if(sub3>=80&&sub3<=84) {
gp3=3.70;
}
if(sub3>=75&&sub3<=79) {
gp3=3.30;
}
if(sub3>=70&&sub3<=74) {
gp3=3.00;
}
if(sub3>=65&&sub3<=69) {
gp3=2.70;
}
if(sub3>=60&&sub3<=64) {
gp3=2.30;
}
if(sub3>=55&&sub3<=59) {
gp3=2.00;
}
if(sub3>=50&&sub3<=54) {
gp3=1.70;
}
if(sub3>=45&&sub3<=49) {
gp3=1.00;
}
//*****sub3 gp3 finished
if(sub4>=85&&sub4<=100) {
gp4=4.00;
}
if(sub4>=80&&sub4<=84) {
gp4=3.70;
}
if(sub4>=75&&sub4<=79) {
gp4=3.30;
}
if(sub4>=70&&sub4<=74) {
gp4=3.00;
}
if(sub4>=65&&sub4<=69) {
gp4=2.70;
}
if(sub4>=60&&sub4<=64) {
gp4=2.30;
}
if(sub4>=55&&sub4<=59) {
gp4=2.00;
}
if(sub4>=50&&sub4<=54) {
gp4=1.70;
}
if(sub4>=45&&sub4<=49) {
gp4=1.00;
}
//*****gp4 sub4 finished
if(sub5>=85&&sub5<=100) {
gp5=4.00;
}
if(sub5>=80&&sub5<=84) {
gp5=3.70;
}
if(sub5>=75&&sub5<=79) {
gp5=3.30;
}
if(sub5>=70&&sub5<=74) {
gp5=3.00;
}
if(sub5>=65&&sub5<=69) {
gp5=2.70;
}
if(sub5>=60&&sub5<=64) {
gp5=2.30;
}
if(sub5>=55&&sub5<=59) {
gp5=2.00;
}
if(sub5>=50&&sub5<=54) {
gp5=1.70;
}
if(sub5>=45&&sub5<=49) {
gp5=1.00;
}
//***** sub5 gp5 finished
if(sub6>=85&&sub6<=100) {
gp6=4.00;
}
if(sub6>=80&&sub6<=84) {
gp6=3.70;
}
if(sub6>=75&&sub6<=79) {
gp6=3.30;
}
if(sub6>=70&&sub6<=74) {
gp6=3.00;
}
if(sub6>=65&&sub6<=69) {
gp6=2.70;
}
if(sub6>=60&&sub6<=64) {
gp6=2.30;
}
if(sub6>=55&&sub6<=59) {
gp6=2.00;
}
if(sub6>=50&&sub6<=54) {
gp6=1.70;
}
if(sub6>=45&&sub6<=49) {
gp6=1.00;
}
//End Calculating GPA
obtained=sub1+sub2+sub3+sub4+sub5+sub6;
GP=gp1+gp2+gp3+gp4+gp5+gp6;
GP=GP/6;
System.out.println("\n\n******Information******\n");
System.out.println("Total Marks = "+subtotal+"\n"+"Obtained marks = "+obtained+"\n"+"Percentage = "+(obtained/subtotal)*100);
System.out.println("GPA = "+GP);
System.out.println("\n***********************");
}
}
答案 0 :(得分:0)
没有进一步的知识(比如错误就是这样......)我的第一个猜测就是这条线是罪魁祸首。
double sub1,sub2,sub3,sub4,sub5,sub6,subtotal=100*6,obtained,GP;
我认为这是设置sub1,sub2,sub3,sub4,sub5,sub6&amp;小计到600,离开获得和GP未初始化。 (这也是一个非常罕见的代码行)
如果是这样,那么
double gp1,gp2,gp3,gp4,gp5,gp6;
可能也会将这些变量保留为未初始化。
答案 1 :(得分:0)
编译器无法知道您的变量是否已初始化,除非您在声明它们时显式初始化它们,或者确保代码中的每个路径在使用之前初始化它们。
由于0.0
似乎不是变量的合适默认值,因此您应该使用if...else if...else
控制语句而不是简单的if
语句。
//Calculating GPA
if(sub1>=85) {
gp1=4.00;
}
else if(sub1>=80&&sub1<=84) {
gp1=3.70;
}
else if(sub1>=75&&sub1<=79) {
gp1=3.30;
}
else if(sub1>=70&&sub1<=74) {
gp1=3.00;
}
else if(sub1>=65&&sub1<=69) {
gp1=2.70;
}
else if(sub1>=60&&sub1<=64) {
gp1=2.30;
}
else if(sub1>=55&&sub1<=59) {
gp1=2.00;
}
else if(sub1>=50&&sub1<=54) {
gp1=1.70;
}
else { // (sub1>=45&&sub1<=49)
gp1=1.00; // or some other value when sub1 < 45?
}
请注意,编译器在编译时不知道sub1
不允许超出范围45 - 100.您需要确保在中初始化gp1
可能的分支(适用于sub1
的所有值)。