[英]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.