簡體   English   中英

Java無法從數組獲取用戶輸入

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM