Java 尝试使用构造函数传递数组值

Java 尝试使用构造函数传递数组值,java,arrays,for-loop,constructor,initialization,Java,Arrays,For Loop,Constructor,Initialization,我已经手工创建了班上所有的对象,只需要使用数组将名称、等级和ID号输入。当我尝试时,它会给我一个关于不兼容类型的错误。我理解这可能是由于对某种语法类型错误的限制。有人能帮我学习这部分的物理语法吗?非常感谢 package bilak_sackin_assignment_7; public class Bilak_Sackin_Assignment_7 { public static void main(String[] args) { student Frank = new st

我已经手工创建了班上所有的对象,只需要使用数组将名称、等级和ID号输入。当我尝试时,它会给我一个关于不兼容类型的错误。我理解这可能是由于对某种语法类型错误的限制。有人能帮我学习这部分的物理语法吗?非常感谢

package bilak_sackin_assignment_7;

public class Bilak_Sackin_Assignment_7 {

  public static void main(String[] args) {
    student Frank = new student("Frank", 95.2, 11231);

    student Billy = new student("Billy", 65.6, 656454);

    student Alex = new student("Alex", 65.2, 123456);

    student Miranda = new student("Miranda", 80.0, 963852);

    student Joel = new student("Joel", 89.9, 486248);

    Frank.display();
    Billy.display();
    Alex.display();
    Miranda.display();
    Joel.display();
  }
}

class student {

  String[] name = new String[5];
  double[] grade = new double[5];
  int[] ID = new int[5];

  public student(String[] n, double[] g, int[] d) {
    name = n;
    grade = g;
    ID = d;
  }

  public void display() {
    for (int i = 0; i < 4; i++) {
      System.out.println("Names: " + name[i]);
      System.out.println("Grades: " + grade[i]);
      System.out.println("Student ID: " + ID[i]);
    }
  }
}
构造函数需要一个字符串数组、一个双精度数组和一个整数数组

然而,这就是您要传递的内容:

new student("Joel", 89.9, 486248);
一个字符串、一个双精度和一个整型

我猜,你的学生课堂上不需要数组,除了分数

因此,第一步是删除name和id的数组


第二步:将一个双倍数组作为分数传递。

我对此也很陌生,但您肯定不需要数组,而是在创建对象。像这样移除所有的[和]-

public static void main(String[] args) {
        student Frank = new student("Frank",95.2,11231);

        student Billy = new student("Billy", 65.6, 656454);

        student Alex = new student("Alex", 65.2, 123456);

        student Miranda = new student("Miranda", 80.0, 963852);

        student Joel = new student("Joel", 89.9, 486248);

        Frank.display();
        Billy.display();
        Alex.display();
        Miranda.display();
        Joel.display();
    }

}
class student
{

    String name;
    double grade;
    int ID;

    public student(String n, double g, int d)
    {
        name = n;
        grade = g;
        ID = d;

    }
    public void display()
    {

            System.out.println("Names: " + name);
            System.out.println("Grades: " + grade);
            System.out.println("Student ID: " + ID);


    }
}
这对我很有用


如果我是对的,请将我标记为对的,我需要代表!:-

在student的构造函数中,所有的输入都是基元数组,但是,在创建上述对象时没有使用它们

如果要按如下方式使用构造函数:

Student billy = new Student("Billy", 23, 35);
然后必须使用非数组输入定义构造函数,即

class Student {
    String name;
    double grade;
    int id;
    public Student(String name, double grade, int id) {
        this.name = name;
        this.grade = grade;
        this.id = id;
    }
}

好的,我决定使用@NickL的想法,使用数组来构造对象,然后将其作为数组访问

包bilak_sackin_任务7

公共课Bilak_Sackin_作业7{

public static void main(String[] args) {

   String name[] = {"Frank", "Billy","Alex", "Miranda", "Joel" };
   double grades[] = {95.2, 65.6, 65.2, 80.0, 89.9};
   int iD[] = {112312, 656454, 123456, 963852, 486248};

    for (int i = 0; i < 5; i++)
    {
    String names = name[i];
    double grade =(grades[i]);
    int ID = (iD[i]);
    System.out.println("Name: " + names + "   |  Grade: " +  grade + "   |  ID number: " +  ID);
    }
}

}

Student将字符串[]作为其第一个参数;你在传递一个字符串。要么传递新字符串[]{Miranda}而不是Miranda,要么将参数的类型更改为String。除此之外,现在将是一个非常好的时间来学习Java命名约定,并开始遵循这些约定,学习在任何地方使用有意义的名称。JonSkeet说,还要学会缩进你的代码。再加上AndyTurmer和JonSkeet所说的,看看封装……谢谢@AndyTurner,这似乎是有道理的。我正在尝试使用数组,以使编写代码更简单、更容易,而不是对每个对象单独进行更改,而不是从他最初的帖子中遗漏了这一点。它不需要,将进行编辑。虽然这确实有效,但我主要尝试在这里使用数组,以便以不同的方式获取信息,而不是粗暴地强迫我单独更改每个对象,这样您就不希望每次都创建新对象。创建一个“name”数组,并使用name[]={Frank,Billy…等等,这也会忽略需要构造函数的使用吗?是的,你会完全摆脱学生类,在main中运行它。太棒了,我看到我在那里做了什么。但是,我只是不确定将这些数字实际放入数组的语法。我尝试了AndyTurner的方法,但它会给我更多错误,说非法表达式的开始那么你是如何在数组中添加数字的呢?我还没有做到。我很好奇如何才能添加分数和ID号。一旦我有办法使用构造函数方法将每个值放入数组中,它就会起作用了?我在想像name[0]={Frank}以此类推,但这似乎不起作用,因为该数组在下面定义,所以我不能具体这样做。这与构造函数完全无关。name[0]=Frank;name可能是一个数组,name[0]只是数组的第一个元素,它是一个字符串。那么,在我尝试时,是否有办法使用构造函数将值输入到数组中?我基本上只需要说name[]=Frank、Billy等?在查看了它的功能后,它似乎与我的意图相反,但谢谢!我需要将这些值放入单独的数组中,以便我的显示类可以正确打印,并且我可以稍后以不同的方式编辑信息等等
public static void main(String[] args) {

   String name[] = {"Frank", "Billy","Alex", "Miranda", "Joel" };
   double grades[] = {95.2, 65.6, 65.2, 80.0, 89.9};
   int iD[] = {112312, 656454, 123456, 963852, 486248};

    for (int i = 0; i < 5; i++)
    {
    String names = name[i];
    double grade =(grades[i]);
    int ID = (iD[i]);
    System.out.println("Name: " + names + "   |  Grade: " +  grade + "   |  ID number: " +  ID);
    }
}