-5

これが私の目的です。2 つのクラスを作成する必要があります。各属性のゲッター。したがって、合計 3 つの setter と 3 つの getter を作成する必要があります。中間試験と最終試験のセッターでは、与えられた成績が有効かどうかをチェックする必要があります。グレードは 0 ~ 100 の間である必要があります。無効な場合は、「The grade is invalid!」というエラー メッセージを出力します。次の採点方式に従って最終成績を計算する getFinalGrade メソッドを定義します。計算後、最終成績の結果を返します。◦ 採点: ▪ 中間: 40% ▪ 期末試験: 60% 属性の詳細を出力するメソッド showGrades を定義します。成績は小数点以下 2 桁までの数値で表示する必要があります。(例を参照) ◦ 出力例: 「名前: トム、中間: 90.00、最終試験: 80.00、最終成績: 82.00」

  1. GradeCalculator クラス GradeCalculator クラスを作成し、すべて (ステップ 1 からステップ 4) を main メソッドに入れます。ステップ 1: StudentArray と呼ばれる長さ 5 の Student 配列を作成します。ステップ 2: ループを使用して 5 つの Student オブジェクトを作成します。名前、中間試験、最終試験を 1 つずつ入力するようにユーザーに依頼し (ユーザーにプロンプ​​トを出します)、適切なセッターを呼び出して、これらを対応する属性に格納します。すべての値が設定されたら、新しく作成された Student オブジェクトを studentArray に格納します。ステップ 3: showGrades を呼び出して、studentArray をループし、各生徒の詳細を出力します。ステップ 4: これら 5 人の生徒の最終成績の平均を計算し、画面に出力します。成績は小数点以下 2 桁までの数値で表示する必要があります。

これまでに書いたコードは次のとおりです。

public class Student {

private String name;
private double midterm;
private double finalExam;
private double finalGrade;

public Student(String n, double a, double m)
{
    name = n;
    midterm = a;
    finalExam = m;
}


public String getName()
{
    return (name);
}
public double getmidterm()
{
    return (midterm);
}

if (midterm < 0)
{
midterm = 0;
System.out.println("The grade is invalid! Grade will be entered as 0.");
}
if (midterm >100)
{
midterm = 100;
System.out.println("The grade is invalid! Grade will be entered as 100.");
}
else
{
System.out.println("Midterm grade recorded." + midterm);
}
public double getfinalExam()
{
    return (finalExam);
}

if (finalExam < 0)
{
    finalExam = 0;
    System.out.println("The grade is invalid");
}
if (finalExam > 100)
{
    finalExam = 100;}
    System.out.println("The grade is invalid! Grade will be entered as 100.");
}
else
{
    System.out.println("Final Exam grade recorded." + finalExam);
}
public double getfinalGrade()
{
finalGrade = (midterm * .40) + (finalExam * .60);
    return (finalGrade);
}
public double showGrades()
{
System.out.println("Name:" + name + "midterm:" + midterm + "Final Exam:"  + finalExam);
}
public void setName(String studentName) 
{
    name = studentName;
}
public void setMidterm(double midtermGrade)
{
    midtermGrade = midterm;
}
public void setFinal(double finalGrade)
{
    finalGrade = finalExam;
}

コード:

public class GradeStudents{
Student[] students;
import java.util.Scanner;

GradeStudents(){}

public static void main(String[] args)  {

String[] studentarr = new String[5];

for(double i = 0; i < 5; i++);
    { //insert what the for loop executes here}
}


}

}
4

3 に答える 3

0

メソッドの外側に If ステートメントがあるように見えるため、プログラムがエラー/例外をスローする可能性があります。

このコードのほんの一部

public double getmidterm()
{
    return (midterm);
}
// Potentially an error here
if (midterm < 0)
{
midterm = 0;
System.out.println("The grade is invalid! Grade will be entered as 0.");
}

これらの if ステートメントをメソッドに入れ、このメソッドをテスト クラス (メイン メソッド) で呼び出すことができます。

また、 get メソッドと set メソッドを定義していますが、値を返していません (この場合):

public double showGrades()
{
System.out.println("Name:" + name + "midterm:" + midterm + "Final Exam:"  + finalExam);
}

ここでは、println ではなく double をコンソールに返す必要があります。

学生を返す toString メソッドがある場合、ループ内で student.toString() を呼び出すことができ、必要な値が表示されます。

于 2013-11-12T16:33:08.143 に答える
0

これはあなたの質問に合っていますか?

public static void main(String[] args)  {

Student[] studentarr = new Student[5];

for(double i = 0; i < 5; i++);
{ 
   studentarr[i] = new Student(params...);
}

studentarr[0].someStudentMethod();

}
于 2013-11-12T16:32:14.480 に答える
0

最善の方法は、いくつかの配列にデータを入力し、コードを実行して、出力またはエラーが発生するかどうかを確認することだと思います。

生徒のデータはどこから?ユーザー インターフェイス入力またはテキスト、xml、または json ファイルからですか?

于 2013-11-12T16:32:21.027 に答える