[英]Java cannot get user input from array
我在这里要做的基本上是一个显示结果清单的Java程序。
有时我会收到奇怪的错误,程序无法正确显示输出。
import java.util.*;
import java.text.DecimalFormat;
public class Assignment2
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
//variable declaration
int totalsubjects;
int totalcredithour = 0;
double totalpointaccumulate=0;
String name;
String id;
String program;
//Decimal Formatting
DecimalFormat df = new DecimalFormat("#,###,##0.00");
//prompt for student information
System.out.println("Please enter student's name: ");
name = sc.nextLine();
System.out.println("Please enter student's ID: ");
id = sc.nextLine();
System.out.println("Please enter student's program: ");
program = sc.nextLine();
System.out.println("Please enter how many subjects: ");
totalsubjects = sc.nextInt();
//arrays declaration
String[] code = new String[totalsubjects];
int[] credithour = new int[totalsubjects];
double[] courseworkMark = new double[totalsubjects];
double[] finalexamMark = new double[totalsubjects];
double[] gpa = new double[totalsubjects];
double[] totalMarks = new double[totalsubjects];
char[] grade = new char[totalsubjects];
double[] point = new double[totalsubjects];
double[] totalpoint = new double[totalsubjects];
//loop for each subject informations
for(int i=0;i <code.length;i++)
{
System.out.println("Please enter subject code no "+(i+1)+":");
code[i] = sc.next();
System.out.println("Please enter credithour for subject no"+(i+1)+":");
credithour[i]=sc.nextInt();
System.out.println("Please enter the coursework mark for subject no"+(i+1)+":");
courseworkMark[i] = sc.nextDouble();
System.out.println("Please enter the final exam mark for subject no"+(i+1)+":");
finalexamMark[i] = sc.nextDouble();
totalMarks[i]=(courseworkMark[i]*0.6)+(finalexamMark[i]*0.4);
totalcredithour = credithour[i] + totalcredithour;
//Grade placement for each subject
if (totalMarks[i]<= 100 && totalMarks[i]>=80)
{
grade[i] = 'A';
point[i] = 4.0;
}
else if (totalMarks[i]>=60 && totalMarks[i] <=79)
{
grade[i] = 'B';
point[i] = 3.0;
}
else if (totalMarks[i]>=59 && totalMarks[i] <=49)
{
grade[i] = 'C';
point[i] = 2.0;
}
else if (totalMarks[i]>=0 && totalMarks[i] <=40)
{
grade[i] = 'F';
point[i] = 0.0;
}
totalpoint[i] = point[i] * credithour[i];
totalpointaccumulate = totalpoint[i] + totalpointaccumulate;
}
System.out.println("\t -x-");
System.out.println(" Result Slip Semester January 2016");
System.out.println("____________________________________________");
System.out.println("Name : "+name);
System.out.println("ID : "+id);
System.out.println("Program: "+program);
System.out.println("____________________________________________");
System.out.println(" CrHr Grade Pt TotalPt");
System.out.println("--------------------------------------------");
for(int k=0;k<code.length;k++)
{
System.out.println((k+1)+(".")+code[k] +("\t")+credithour[k]+("\t")+grade[k]+("\t")+point[k]+"\t"+totalpoint[k]);
}
System.out.println("--------------------------------------------");
System.out.println(" Total"+" "+totalcredithour+" " + totalpointaccumulate);
System.out.println(" GPA: "+(df.format(totalpointaccumulate/totalcredithour)));
}
}
这是我的示例输入,会产生错误。
Please enter student's name:
KZK KKY
Please enter student's ID:
32423432
Please enter student's program:
BSE
Please enter how many subjects:
3
Please enter subject code no 1:
IGB4040
Please enter credithour for subject no1:
3
Please enter the coursework mark for subject no1:
70
Please enter the final exam mark for subject no1:
90
Please enter subject code no 2:
IGB3030
Please enter credithour for subject no2:
3
Please enter the coursework mark for subject no2:
50
Please enter the final exam mark for subject no2:
70
Please enter subject code no 3:
IGB2020
Please enter credithour for subject no3:
4
Please enter the coursework mark for subject no3:
60
Please enter the final exam mark for subject no3:
70
由上面的样本输入产生的错误输出。 我在这里的问题是,为什么结果单上的第二个主题为空,而第一个和第三个主题工作得很好? 我的代码中是否存在任何逻辑错误?
提前致谢。
正如评论中所讨论的,在检查了代码之后,我看到else if (totalMarks[i]>=59 && totalMarks[i] <=49)
– 因为周围的情况是> = 60和<= 40,所以我假设else if (totalMarks[i]>=41 && totalMarks[i] <=59)
如果您是我,我会花一些时间在调试技能上投入时间,以确保您识别出这样的小逻辑错误:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.