【问题标题】:Assigning grades based on a table in Java根据 Java 中的表格分配成绩
【发布时间】:2013-09-30 15:05:14
【问题描述】:

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

我们还没有学习过数组,目前还只是了解了基本的循环。有没有办法使用 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);





}
}

【问题讨论】:

  • 您是否希望能够输出totalTestScore + totalHomeworkScore = GRADE 的结果,其中GRADE 是GA, or P`,我是否正确?
  • 这只是一个任意表,还是您可以根据两个分数算术计算成绩?
  • 我们不能将两者加在一起,所以它必须类似于“如果你的考试成绩是 X,而你的作业成绩是 Y,那么你通过/不及格”所以如果你的成绩是G 或 A,你通过了课程
  • 如果截断是任意的,那么你需要了解数组,如果有算法,那么你可以使用它。
  • 你学过整数除法/取模吗?如果您有(实际上,即使您没有),您可以使用这些将问题减少为一些特殊情况以及测试和作业分数的线性组合。请注意,“G”区域的边界是一条从左上角到右下角的线,另外还有一些向左的“凸起”。另请注意,如果T&lt;150H&lt;600,等级为“P”。像这样的模式可以让您简化问题。不确定这是否是您的讲师的意图。

标签: java arrays loops for-loop while-loop


【解决方案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 语句和更合乎逻辑的方式来剥离你的表格部分,但本质上,没有数组或实际算法,这真的是可能的。

【讨论】:

    猜你喜欢
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多