宿題、ラボ、テストなどのユーザー入力を受け取り、それらを文字列に入れるクラス用のプログラムを作成する必要があります。また、それらを個別の「二重」数値に分割し、書き込む writeToFile メソッドを含む別のクラスがあります。生徒の成績をファイルに。
しかし、問題が発生し続けます..初めてユーザーに名前を尋ねると、問題なく動作しますが、ユーザーが do-while ループに再び入ることにした場合、「あなたの名前は何ですか」はスキップされます。 idに直接。最後の入力が文字列ではないことに関係があることはわかっています。その解決策は、「keyboard.nextLine();」を配置することです。質問の上ですが、私はそれを試しましたが、質問が尋ねられる前にユーザーに名前を尋ねるだけです..
import java.util.Scanner;
import java.io.*;
import java.text.DecimalFormat;
public class GradeApplication
{
public static void main(String[] args) throws IOException
{
Scanner keyboard = new Scanner(System.in);
//Define variables
String name;
int id;
String homework;
String labs;
String tests;
double project;
double discussion;
int answer;
do
{
System.out.print("\nWhat is your name? ");
name=keyboard.nextLine();
System.out.print("\nWhat is your student ID? ");
id=keyboard.nextInt();
homework = keyboard.nextLine();
System.out.println("\nPlease enter homework grades separated by spaces:");
homework = keyboard.nextLine();
System.out.println("Please enter lab grades separated by spaces:");
labs = keyboard.nextLine();
System.out.println("Please enter test grades separated by spaces:");
tests = keyboard.nextLine();
System.out.println("Please enter project grade:");
project = keyboard.nextDouble();
System.out.println("Please enter discussion grade:");
discussion = keyboard.nextDouble();
System.out.println("\nResults: ");
//Call toString method
Student_Khazma s = new Student_Khazma(name,id,homework,labs,tests,project,discussion);
System.out.print(s.toString());
//Open file
PrintWriter outputFile= new PrintWriter("gradeReport.txt");
System.out.println(s.writeToFile());
outputFile.close();
System.out.print("\n\nWould you like to see your grade report again? (1 is yes, 2 is no): ");
answer=keyboard.nextInt();
System.out.print("\n\nWould you like to see your grade report again? (1 is yes, 2 is no): ");
answer=keyboard.nextInt();
}while(answer==1);
}
}