Java 作为对象问题的参数传递数组
我想把数组作为对象的一个参数传递,但我有点像堆栈。 这就是我的问题Java 作为对象问题的参数传递数组,java,arrays,object,parameters,Java,Arrays,Object,Parameters,我想把数组作为对象的一个参数传递,但我有点像堆栈。 这就是我的问题 public class Publisher { public static void main(String args[]) { String teachers[] = {"Jyothi", "Jyostna", "Sumathi"}; Publisher2 p1 = new Publisher2(teachers[1],20); //The problem is here
public class Publisher {
public static void main(String args[]) {
String teachers[] = {"Jyothi", "Jyostna", "Sumathi"};
Publisher2 p1 = new Publisher2(teachers[1],20); //The problem is here, I can't specify
//index of array (I can put onlu teachers without index[1])so toString method is returning address of object instead of the name
System.out.println(p1);
}
}
class Publisher2 {
String[] teachers;
int y;
public Publisher2(String[] teachers, int y) {
this.teachers = teachers;
this.y = y;
}
@Override
public String toString() {
return "Publisher2{" + "teachers=" + teachers + ", y=" + y + '}';
}
}
teachers[1]
是数组中的第二个元素。数组本身就是教师
。像
Publisher2 p1 = new Publisher2(teachers, 20);
teachers[1]
是数组中的第二个元素。数组本身就是教师
。像
Publisher2 p1 = new Publisher2(teachers, 20);
您可能希望执行以下操作:
public class Publisher {
public static void main(String args[]) {
String teachers[] = { "Jyothi", "Jyostna", "Sumathi" };
Publisher2 p1 = new Publisher2(teachers[1], 20);
System.out.println(p1);
}
}
class Publisher2 {
String teacher;
int y;
public Publisher2(String teacher, int y) {
this.teacher = teacher;
this.y = y;
}
@Override
public String toString() {
return "Publisher2{" + "teacher=" + teacher + ", y=" + y + '}';
}
}
输出:
Publisher2{teacher=Jyostna, y=20}
您可能希望执行以下操作:
public class Publisher {
public static void main(String args[]) {
String teachers[] = { "Jyothi", "Jyostna", "Sumathi" };
Publisher2 p1 = new Publisher2(teachers[1], 20);
System.out.println(p1);
}
}
class Publisher2 {
String teacher;
int y;
public Publisher2(String teacher, int y) {
this.teacher = teacher;
this.y = y;
}
@Override
public String toString() {
return "Publisher2{" + "teacher=" + teacher + ", y=" + y + '}';
}
}
输出:
Publisher2{teacher=Jyostna, y=20}
另一种可能是使用varargs并交换参数(varargs必须是参数列表中的最后一个):
public Publisher2(整数y,字符串…教师){
教师=教师;
这个。y=y;
}
使用这种方法,您可以传递任意多个参数(无、单个、多个或一个数组):
新发布者2(20);
新出版商2人(20人,教师[0]);
新出版商2名(20名,教师);
对于toString
问题,您可以使用java.util.array
,因此toString
如下所示:
@覆盖
公共字符串toString(){
返回“Publisher2{“+”teachers=“+Arrays.toString(teachers)+”,y=“+y+”}”;
}
然后字符串将看起来像
Publisher2{teachers=[], y=20} // for new Publisher(20)
Publisher2{teachers=[Jyostna], y=20} // for new Publisher(20, teachers[1])
Publisher2{teachers=[Jyothi, Jyostna, Sumathi], y=20}
// for new Publisher(20, teachers)
另一种可能是使用varargs并交换参数(varargs必须是参数列表中的最后一个):
public Publisher2(整数y,字符串…教师){
教师=教师;
这个。y=y;
}
使用这种方法,您可以传递任意多个参数(无、单个、多个或一个数组):
新发布者2(20);
新出版商2人(20人,教师[0]);
新出版商2名(20名,教师);
对于toString
问题,您可以使用java.util.array
,因此toString
如下所示:
@覆盖
公共字符串toString(){
返回“Publisher2{“+”teachers=“+Arrays.toString(teachers)+”,y=“+y+”}”;
}
然后字符串将看起来像
Publisher2{teachers=[], y=20} // for new Publisher(20)
Publisher2{teachers=[Jyostna], y=20} // for new Publisher(20, teachers[1])
Publisher2{teachers=[Jyothi, Jyostna, Sumathi], y=20}
// for new Publisher(20, teachers)
由于您已在各种注释中澄清了您的问题(请编辑您的问题),我们现在知道您希望传递单个项目,但您在代码和注释中暗示,
Publisher2
必须使用数组作为参数来构造
因此,您需要构建一个包含单个项的新数组
String[] teacherSubset = new String[] { teachers[1] };
Publisher2 p1 = new Publisher2(teacherSubset, 20);
或者
请编辑您的问题,以便明确您正试图完成的任务。由于您已在各种评论中澄清了您的问题(请编辑您的问题),我们现在知道您希望传递一个项目,但您在代码和注释中暗示,
Publisher2
必须使用数组作为参数来构造
因此,您需要构建一个包含单个项的新数组
String[] teacherSubset = new String[] { teachers[1] };
Publisher2 p1 = new Publisher2(teacherSubset, 20);
或者
请编辑您的问题,以便清楚地了解您正试图实现的目标。就是这样……但我希望p1对象包含第二个元素,而不是孔阵列。例如,我想编写一个字符串方法:Publisher2{teachers=Jyostna,y=20},对于p2:Publisher2{teachers=Sumathi,y=20}……那么它应该是一个
String
,而不是一个String
(s)数组。我正在寻找更好的解决方案……)教师是多元的。。。你可能想澄清为什么一个老师现在是多重的。。。例如,我有一个数组(不必称为teacher,它可以是String,也可以是int),我有两个参数的对象o1、o2、o3。o1的其中一个参数必须是该数组的索引[1],其他对象o2的参数必须是索引[2],o3的参数必须是索引[2]。所以,我找不到解决方案…我应该写一些方法还是什么?就是这样…但我希望p1对象由第二个元素组成,而不是孔数组。例如,我想编写一个字符串方法:Publisher2{teachers=Jyostna,y=20},对于p2:Publisher2{teachers=Sumathi,y=20}……那么它应该是一个String
,而不是一个String
(s)数组。我正在寻找更好的解决方案……)教师是多元的。。。你可能想澄清为什么一个老师现在是多重的。。。例如,我有一个数组(不必称为teacher,它可以是String,也可以是int),我有两个参数的对象o1、o2、o3。o1的其中一个参数必须是该数组的索引[1],其他对象o2的参数必须是索引[2],o3的参数必须是索引[2]。所以,我找不到解决办法…我应该写些方法还是什么?非常感谢…现在我明白了。它一直就在我眼前非常感谢你…现在我明白了。它一直就在我眼前非常感谢你。Varargs也是非常好的方法。这两个答案都很好。varargs可能有助于语法上的方便,但无助于解决所提出的问题。@AndrewF为什么这对所提出的问题没有帮助?使用varargs,手动创建数组的步骤被传递给编译器,因此newpublisher2(20,teachers[1])
被编译为newpublisher2(20,newstring[]{teachers[1]})
问题语句:“我想将数组作为对象的参数传递”——tha