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