0

私が行っているこの宿題は、ユーザーにテストの点数と宿題の点数を入力してもらい、次の表を使用して成績を割り当てることです。

ここに画像の説明を入力

配列についてはまだ学んでおらず、これまでのところ基本的なループしかありません。何十もの if ステートメントの代わりに for または while ループを使用してこれを行う方法はありますか? これは私がこれまでに持っているものです:

import java.util.Scanner;

public class GradeCalculator {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner scanner = new Scanner(System.in);
    int numberOfAssignments = 7;
    int numberOfLabs = 16 ;
    int totalAssignmentScore;
    int totalLabScore;
    int totalTestScore = 0;
    int totalHomeworkScore = 0;
    int zyante;
    int attendance;
    int midterm1;
    int midterm2;
    int finalTest;
    int quizScore;
    int pat;


    for (int i = 1; i < numberOfAssignments; i++) {
        System.out.println("Enter your score obtained in Assignment No."+ i + ":");
        totalAssignmentScore = scanner.nextInt();
        {
            totalHomeworkScore += totalAssignmentScore;
            System.out.println(totalHomeworkScore);
        }

    }
    for (int i = 1; i < numberOfLabs; i++) {
        System.out
                .println("Enter your score obtained in Lab No." + i + ":");
        totalLabScore = scanner.nextInt();
        {
            totalHomeworkScore += totalLabScore;
            System.out.println(totalHomeworkScore);
        }
    }
    System.out.println("Enter your score obtained in Zyante: ");
    zyante = scanner.nextInt();
    totalHomeworkScore +=zyante;

    System.out.println("Enter your total score obtained in Attendance: ");
    attendance = scanner.nextInt();
    totalHomeworkScore += attendance;

    System.out.println("Enter your Midterm no. 1 score: ");
    midterm1 = scanner.nextInt();
    totalTestScore += midterm1;

    System.out.println("Enter your Midterm no. 2 score: ");
    midterm2 = scanner.nextInt();
    totalTestScore += midterm2;

    System.out.println("Enter your Final exam score: ");
    finalTest = scanner.nextInt();
    totalHomeworkScore += finalTest;

    System.out.println("Enter your total score in the in-class Quizzes: ");
    quizScore = scanner.nextInt();
    totalHomeworkScore += quizScore;

    System.out.println("Enter your score for PAT: ");
    pat = scanner.nextInt();
    totalHomeworkScore += pat;


    System.out.println("Your total test score is: " + totalTestScore );
    System.out.println("your total homework score is: " + totalHomeworkScore);





}
}
4

1 に答える 1

1

配列を使用することが本当に想定されていない場合は、配列を分析して、そこからロジックを引き出す必要があります。

次のようなものから始めます。

enum Grade {
  P,
  A,
  G;
}

public Grade score ( int tests, int homework ) {
  if ( homework <= 599
          || tests <= 149 ) {
    return Grade.P;
  }
  return Grade.G;
}

ここに画像の説明を入力

次に、さらに剥がします。

public Grade score ( int tests, int homework ) {
  if ( homework <= 599
          || tests <= 149 
          || (homework <= 719 && tests <= 179 )) {
    return Grade.P;
  }
  return Grade.G;
}

そしてあなたは持っています:

ここに画像の説明を入力

など、すべてのデータの詳細がわかるまで続けます。

if ステートメントを整理するもう少し整然とした方法や、テーブルのセクションを切り離すより論理的な方法がありますが、基本的に、配列や実際のアルゴリズムがなければ、これが可能なすべてです。

于 2013-09-30T15:32:19.903 に答える