Java 如何设计不生成并行阵列的程序
我正在编写Java教科书中的一项作业,内容是: 修改本章中的GradeRange程序(清单6.5),使其不使用并行数组。相反,设计一个名为Grade的新类,该类存储成绩字符串及其截止值(该成绩的最低分数)。使用等级构造函数设置这两个值,并提供返回值的方法。在新GradeRange程序的主要方法中,用Grade对象填充单个数组,然后生成与原始GradeRange程序相同的输出 以下是成绩范围计划:Java 如何设计不生成并行阵列的程序,java,arrays,class,methods,Java,Arrays,Class,Methods,我正在编写Java教科书中的一项作业,内容是: 修改本章中的GradeRange程序(清单6.5),使其不使用并行数组。相反,设计一个名为Grade的新类,该类存储成绩字符串及其截止值(该成绩的最低分数)。使用等级构造函数设置这两个值,并提供返回值的方法。在新GradeRange程序的主要方法中,用Grade对象填充单个数组,然后生成与原始GradeRange程序相同的输出 以下是成绩范围计划: //************************************************
//********************************************************************
// GradeRange.java Author: Lewis/Loftus/Cocking
//
// Demonstrates the use of an array of String objects.
//********************************************************************
public class GradeRange
{
//-----------------------------------------------------------------
// Stores the possible grades and their numeric lowest value,
// then prints them out.
//-----------------------------------------------------------------
public static void main (String[] args)
{
String[] grades = {"A", "A-", "B+", "B", "B-", "C+", "C", "C-",
"D+", "D", "D-", "F"};
int[] cutoff = {95, 90, 87, 83, 80, 77, 73, 70, 67, 63, 60, 0};
for (int level = 0; level < cutoff.length; level++)
System.out.println (grades[level] + "\t" + cutoff[level]);
}
}
我不知道如何将分数字符串和截止值存储到构造函数中,如果这是作业要求的。我也不知道一个不平行的数组会是什么样子。我想我的最后一个问题是我将如何开发这个程序(用什么方法制作…)?当它说
用坡率对象填充单个阵列
输出:
A 95
A- 90
B+ 87
B 83
B- 80
C+ 77
C 73
C- 70
D+ 67
D 63
D- 60
F 0
您的
Grade
类(如图所示)看起来仍将包含两个并行数组,但只需隐藏它们即可
所要求的是一门课
class Grade
{
// TODO add all the correct constructors, getters and setters
private String grade;
private int cutoff;
}
然后,您需要创建并存储一个
Grade
实例数组。您需要创建一个Grade对象列表,而不是保留两个数组来存储坡度和截止值。您可以这样做:
public class Grade{
//Replace these two with getters and setters if you know what they are
public String grade;
public int cutoff;
public Grade(String gradeConstructorArg, int cutoffConstructorArg){
this.grade = gradeConstructorArg;
this.cutoff = cutoffConstructorArg;
}
}
然后在main方法中创建一个等级数组,如下所示:
public static void main (String[] args){
Grade[] grades = {new Grade("A", 95), new Grade("A-", 90)}; //Add more
for (int i = 0; i < grades.length; i++)
System.out.println (grades[i].grade + "\t" + grades[i].cutoff);
}
publicstaticvoidmain(字符串[]args){
年级[]年级={新年级(“A”,95),新年级(“A-”,90)};//添加更多
对于(int i=0;i
不要忘记,这个问题还要求您为Grade类创建getter方法,以获取Grade和Cuff的值。这意味着您应该在类中将grade和cutoff声明为private,并使用public getter方法检索:
public class Grade{
private String grade;
private int cutoff;
public Grade(String grade, int cutoff){
this.grade = grade;
this.cutoff = cutoff;
}
public String getGrade(){
return grade;
}
public int getCutoff(){
return cutoff;
}
}
然后确保将它们检索为Mr D引用,但修改输出例程如下:
for (int i = 0; i < grades.length; i++)
System.out.println(grades[i].getGrade() + "\t" + grades[i].getCutoff());
for(int i=0;i
非常感谢您的回复,但是,当我添加到成绩数组时,代码是否如下所示<代码>等级[]等级={新等级(“A”,95),新等级(“A-”,90),新等级(“B+”,87),新等级(“B”,83)新等级(“B-”,80)新等级(“C+”,77)新等级(“C”,73)新等级(“C-”,70)新等级(“D+”,67)新等级(“D-”,63)新等级(“D-”,60)新等级(“F”,0)}当我编译时,它会显示“}”,并在第四个新的Grade@Nub看起来在新等级(“B”,83)之后,每个等级都缺少逗号
entry非常感谢,很抱歉,我没有抓住这个简单的错误。当我得到该代码的输出时,我认为它仍然像一个并行数组一样输出。我仍然不明白我需要做什么来更改数组的格式以使其不并行。我编辑了我的原始帖子以显示输出。u给我的代码是拉萨我将输出作为书中的代码。@Nub在您将等级和截止值存储为两个单独的数组之前,现在有一个单独的类等级同时存储这两个等级,还有一个单独的数组存储每个等级。实际上,它们都做了相同的事情,但现在代码更干净、更安全了。好的,非常感谢,我想我只是把w关于我的作业问题,但是输出是什么样子的呢?输出看起来就像你在原始帖子中看到的一样。我认为你把输出的格式和包含对象的单个数组的结构搞混了。单个数组中的每个对象都包含等级和截止值。你可以格式化arr的输出任意选择对象。重点是作业希望您创建等级对象,您可以将其放入1个数组,而不是使用2个数组,这取决于相应的等级和截止值。好的,我现在明白了。我想我已经考虑过所有事情了。非常感谢大家的帮助
for (int i = 0; i < grades.length; i++)
System.out.println(grades[i].getGrade() + "\t" + grades[i].getCutoff());