在java中声明一个对象数组(包含代码)?

时间:2014-04-11 02:43:01

标签: java arrays object

public class Pig {
    private int pigss;
    private Pig[] pigs;

public Pig[] pigNumber (int pigss)
{
    pigs = new Pig [pigss];
    return pigs;
}

包含主要方法的代码:

public class animals{

    public static void main(String[] args){

    Pig cool = new Pig();
    Scanner keyboard = new Scanner (System.in);

    System.out.println("How many pigs are there?");

    int pigss = Integer.parseInt( keyboard.nextLine() );
    cool.pigNumber(pigss);
    //This is where I have trouble. I want to use the array pigs here in the main method, this is what i tried:

    Pig[] pigs = cool.pigNumber(pigss);

然后我尝试使用for循环并将值(String)赋给数组的索引(pigs [])。但是给我的错误是:无法从String转换为Pig。任何提示都表示赞赏。谢谢你。

     for(int j = 0; j < pigs.length; j++)
     {
      System.out.println("What is the pig " + (j+1) + "'s name");
      pigs[j] = keyboard.nextLine();

    }

3 个答案:

答案 0 :(得分:0)

您的猪需要一个属性来包含您尝试传递的字符串值:

public class Pig {

    private String name;

    public void setName(String n) {
        name = n;
    }

    public String getName() {
        return name;
    }

然后当你想把这个字符串值分配给你的猪时:

int indexOfPig = 0; // Or whatever it is supposed to be
pigs[indexOfPig].setName("I am a string");

在java中,你只能使用int作为数组的索引

答案 1 :(得分:0)

它说'不能从字符串转换为猪'因为你不能这样做!

如果您想以某种方式将String转换为Pig,则需要编写一些代码来进行转换。例如,您可以编写一个构造函数,从某种描述中创建一个新的Pig。或者你可以用名字或数字等写一个查找 Pig的方法。

很难提供更具体的建议,因为你没有告诉我们字符串值是什么......或者你期望字符串变成猪。 (我唯一的建议是尝试Macrame :-))

答案 2 :(得分:0)

Pig没有name成员甚至接受字符串的方法。您还试图将String(keyboard.nextline()分配给Pig(pig [j]。

向您的猪添加属性name

class Pig{
   public String name:
   public void Pig(String name){
        this.name = name;
   }
}

然后在循环中分配Pig的新实例。

pigs[j] = new Pig(keyboard.nextLine());

还要摆脱无用的班级pigNumber。您所需要的只是ArrayList Pig。数组列表可以是dynanically大小。

List<Pig> pigs = new ArrayList<Pig>

所以你的循环可能就像

 String name = ""
 while(true){
     name = keyboard.readline();
    if(name== "stop"){
        break;
    }
    pigs.add(new Pig(names);

}

然后得到猪的数量很简单

System.out.println(pigs.length());