如何将类对象作为变量传递给另一个类中的构造函数参数?

时间:2013-12-03 16:53:20

标签: java

我有一个名为fullname的类,它有变量fname,mname和lname。 然后另一个类参与者具有类型为fullname的变量名,类型为int的标记和其他变量。 在另一个类中,我必须创建大小为5的参与者数组,并且必须存储来自用户输入的信息。

我的问题是如何读取fullname变量的值,然后将其作为构造函数参数传递。 使用扫描仪时,它会产生无法从字符串转换为全名的错误。

class fullName { 
    String fname,String mName,String lName;
} 

class participants { 
    fullname name; 
    int rollno ; 
    float marks; 
    public void participants (fullname name,int rollno,float marks) { //.....constructor definition } 
}

class implements { 
    public static void main(String [] args) { 
        participants part[]=new participants ; 
        Scanner sc =new Scanner(System.in);
        float marks=sc.nextFloat(); 
        int rollno=sc.nextInt(); 
        Fullname name=sc.next (); ---->giving error 
        part=new participants(name,rollno,marks); --->giving errors.
    }
}

编辑:我在代码中做了一些更改,但仍没有正确输出'name'。

public class participants {
fullname name; 
int rollno ; 
float marks;
public participants(fullname nameFullname, int rollno, float marks) {
    super();
    this.name=new fullname(null, null, null);
    this.rollno = rollno;
    this.marks = marks;
}
@Override
public String toString() {
    return "name=" + name + ", rollno=" + rollno + ", marks="
            + marks + "";
} 

}

public class Implements {

public static void main(String [] args) 
{ 
    String a = null,b = null,c = null;
    int rollno = 0;
    float marks = 0;



    participants part[]=new participants [5]; 
    Scanner sc =new Scanner(System.in);

    rollno=sc.nextInt();
    marks=sc.nextFloat();
    a=sc.next();
    b=sc.next();
    c=sc.next();

    fullname name=new fullname(a,b,c);

    part[1]=new participants(name,rollno,marks);
    System.out.println(part[1].toString());



}

}

1 个答案:

答案 0 :(得分:0)

  

sc.next()

正在返回Stringhttp://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next()),您正在尝试将其分配给Fullname对象。 Fullname不是String的实例,因此它无效。 如果你想做这个任务,你需要实现一个函数来为你做这个。

part=new participants(name,rollno,marks)

不起作用,因为您将part声明为数组,并且您正在尝试为其分配Participants。 (顺便说一句,该类应以大写字母声明)。如果要分配它,请添加索引。 (例如part[0] = new participants(name,rollno,marks)