0

我一直在做的这个作业是关于要求用户输入他们的考试成绩和作业成绩,然后使用这张表给他们打分:

在此处输入图像描述

我们还没有学过数组,到目前为止只有基本的循环。有没有办法使用 for 或 while 循环而不是几十个 if 语句来做到这一点?这是我到目前为止所拥有的:

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 回答