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