【发布时间】:2017-04-06 23:27:43
【问题描述】:
我目前正在上 Pre-AP 计算机科学课程。我们的老师给我们布置了一个今晚午夜前到期的项目。该项目要求您编写一个程序,询问您的姓名、您输入的成绩、询问您的成绩、平均成绩,然后返回一个字母值(例如 A、B、C)以及您的姓名(例如“伊克巴尔,努尔”)。我似乎已经完成了所有代码,并且当我输入成绩时只有一个超出范围的错误。但是,我的老师说解决这个错误的唯一方法是制作一个巨大的 for 循环并将我的全部里面的代码。这对我来说没有意义,所以如果是这样的话,有人可以解释一下吗?
如果不是这样,我想知道该怎么做。我不希望有人给我答案,而是引导我思考如何才能解决这个问题。
这是我目前的代码:
import java.util.*;
public class Tester {
public static void main (String[] args){
//Prompt for first
//Prompt for last
//Prompt for # of assgmts to be averaged
//for-loop = prompt to enter # grade until all grades are entered (use [])
//loop through array again to calculate average
//print info
//prompt for multiple names and grades
Scanner kbInput = new Scanner(System.in);
System.out.println("How many students will you be entering?");
int numOfStudents = kbInput.nextInt();
String[] Students = new String[numOfStudents];
int k;
for(k = 0; k < Students.length; k++){
System.out.println("Enter your first name.");
String first = kbInput.next();
System.out.println("Enter your last name.");
String last = kbInput.next();
Students[k] = last + ", " + first;
}
String finalGrade = "";
System.out.println("How many grades will you be entering?");
int numOfGrades = kbInput.nextInt();
int[] Grades = new int[numOfGrades];
int sum = 0;
int j;
for (j = 0; j < numOfGrades; j++){
System.out.println("Enter your grades.");
Grades[j] = kbInput.nextInt();
sum+=Grades[j];
}
int average = sum/numOfGrades;
if((average >= 90) && (average <= 100)){
finalGrade = "A";
}
else if((average >= 80) && (average < 90)){
finalGrade = "B";
}
else if((average >= 75) && (average < 80)){
finalGrade = "C";
}
else if((average >= 70) && (average < 75)){
finalGrade = "D";
}
else if(average < 70){
finalGrade = "F";
}
String[] letterGrade = new String[numOfStudents];
int count;
for(count = 0; count < numOfStudents; count++){
letterGrade[count] = finalGrade;
}
}
}
编辑:这里是项目的方向:
- 创建一个名为 FinalGrade 的新 Java 项目,其中包含一个名为 Tester 的类。
- 提示用户输入学生的名字,然后再提示输入学生的姓氏。
- 提示用户输入要平均分配的数量(例如 6 个)。
- 使用 for 循环,提示用户输入数字成绩(仅限整数),直到输入学生作业的确切数量。注意:成绩应该存储在一个数组中。
- 循环遍历成绩数组并计算输入成绩的平均值。
- 在屏幕上打印以下信息(按显示的顺序)... 一种。学生的姓氏 湾。学生的名字 C。学生的最终成绩(显示为字母成绩而不是数值) 示例输出... 霍华德,德里克 - A
超越…… 1. 更改您的应用程序以允许输入多个学生和年级。
【问题讨论】:
-
你想为你的成绩输入什么?
-
您的
Grades和Students之间没有任何联系。所以每个学生都将拥有相同的成绩!我认为您的老师的意思是制作一个大的外部 for 循环,该循环将被执行numberOfStudents次。在这个 for 循环中,询问每个 one 学生的姓名和成绩。然后继续下一个学生。考虑创建一个班级Student,其中包含詹姆斯和一名学生的成绩 -
与您的特定问题无关的建议:将您的代码拆分为方法。这是一种很好的做法,有助于隔离问题,使您的代码更具可读性,划分责任(“分而治之”),...最重要的是,它将使设计和编写代码更容易。
-
您的问题不太清楚。根据您的代码,您要询问等级数。是否所有学生的成绩/科目数。就像5个学生和3个年级一样。你必须问15个等级。学生各 3 个。然后分别计算每个学生的平均成绩。
-
@NoorIqbal 假设您的代码没有按预期工作。我试图运行它,它卡在中间。
标签: java arrays for-loop average