プログラムの問題をトラブルシューティングしようとしていますが、修正方法がわかりません。問題は、レポートの出力を表示しようとしている方法にあると思います-ID#が表示され、名前:姓、名、Sys.out.print行に「学生名」と表示されてレポートが実行される場合+ 配列[2] + 配列[1]。
この問題を解決するにはどうすればよいですか? レポートを実行しようとしたときにのみ発生します。学生の情報を入力する際に作成されるテキストファイルは正しく行われます。
/** * ファイル名: LowerAndUpperDisplay.java * 作成日: 2013 年 10 月 31 日 * 作成者: * 目的: LowerAndUpper アプリケーションを拡張して、enter code here
各レコードを * 下位クラスマン ファイルから、次に上位クラスマン ファイルから 1 つずつ表示するようにします。* 各リストを紹介する見出しを表示します。* * 各レコードについて、ID 番号、姓、名、取得単位数、および卒業に必要な追加単位 * 数を表示します。卒業には120単位が必要だとします。*/
import java.util.Scanner;
import java.nio.file.*;
import java.io.*;
public class LowerAndUpperDisplay {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Path lowerClassmanFile = Paths.get("C:/temp/lowerclassman.txt");
Path upperClassmanFile = Paths.get("C:/temp/upperclassman.txt");
char choice;
int idNum;
int totalCredits;
String first;
String last;
String classStanding = " ";
try
{
OutputStreamWriter lWriter = new OutputStreamWriter(
new BufferedOutputStream(Files.newOutputStream(
lowerClassmanFile, StandardOpenOption.CREATE)));
BufferedWriter lowerClassmanWriter = new BufferedWriter(lWriter);
OutputStreamWriter uWriter = new OutputStreamWriter(
new BufferedOutputStream(Files.newOutputStream(
upperClassmanFile, StandardOpenOption.CREATE)));
BufferedWriter upperClassmanWriter = new BufferedWriter(uWriter);
do {
System.out
.print("Student Records "
+ "\nTo enter student records, type S. For a report, type R. To exit, type Q.");
choice = input.nextLine().charAt(0);
switch (choice)
{
case 'S':
System.out.println("Please enter student information.");
System.out.print("ID Number: ");
idNum = input.nextInt();
input.nextLine();
System.out.print("First Name: ");
first = input.nextLine();
System.out.print("Last Name: ");
last = input.nextLine();
System.out.println("Credit Hours Earned: ");
totalCredits = input.nextInt();
input.nextLine();
classStanding = "ID Number " + idNum + ", Student Name: "
+ last + ", " + first + " Credit Hours: "
+ totalCredits;
if (totalCredits >= 60) {
upperClassmanWriter.write(classStanding);
upperClassmanWriter.newLine();
}
else {
lowerClassmanWriter.write(classStanding);
lowerClassmanWriter.newLine();
}
break;
case 'R':
try {
InputStreamReader lReader = new InputStreamReader(
new BufferedInputStream(Files
.newInputStream(lowerClassmanFile)));
BufferedReader reader1 = new BufferedReader(lReader);
InputStreamReader uReader = new InputStreamReader(
new BufferedInputStream(Files
.newInputStream(upperClassmanFile)));
BufferedReader reader2 = new BufferedReader(uReader);
System.out
.print("The lower classmen are: ");
classStanding = reader1.readLine();
String[] array;
while (classStanding != null) {
array = classStanding.split(",");
totalCredits = Integer.parseInt(array[3]);
System.out.print("ID Number " + array[0]);
System.out.print("Student name " + array[2] + ", " + array[1]) ;
System.out.print("Total credits: " + totalCredits);
System.out.print("This student is " + (120 - totalCredits)
+ " credits short of earning their degree.");
classStanding = reader1.readLine();
}// end while
reader1.close();
System.out.print("The upper classmen are: ");
classStanding = reader2.readLine();
while (classStanding != null) {
array = classStanding.split(",");
totalCredits = Integer.parseInt(array[3]);
//System.out.format("Student Id Number :", "");
System.out.print("ID Number " + array[0]);
System.out.print("Student name : " + array[2] + ", " + array[1]);
System.out.print("Total credits: " + totalCredits);
System.out.print("This student is " + (120 - totalCredits)
+ "credits short of earning their degree.");
classStanding = reader2.readLine();
}// end while
reader2.close();
} catch (Exception e) {
System.out.println("Message: " + e);
}
case 'Q':
break;
default:
System.out
.printf("You have made an invalid option. Please enter a valid option. \n");
}// end switch
} while (choice != 'Q');
lowerClassmanWriter.close();
upperClassmanWriter.close();
} catch (Exception e)
{
System.out
.println("The program has encountered an error. Please notify your Systems Administrator"
+ " of this error. " + e);
}
}// end
}// end class