Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设计不生成并行阵列的程序_Java_Arrays_Class_Methods - Fatal编程技术网

Java 如何设计不生成并行阵列的程序

Java 如何设计不生成并行阵列的程序,java,arrays,class,methods,Java,Arrays,Class,Methods,我正在编写Java教科书中的一项作业,内容是: 修改本章中的GradeRange程序(清单6.5),使其不使用并行数组。相反,设计一个名为Grade的新类,该类存储成绩字符串及其截止值(该成绩的最低分数)。使用等级构造函数设置这两个值,并提供返回值的方法。在新GradeRange程序的主要方法中,用Grade对象填充单个数组,然后生成与原始GradeRange程序相同的输出 以下是成绩范围计划: //************************************************

我正在编写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());