簡體   English   中英

在Java中聲明對象數組(包括代碼)?

[英]Declaring an object array in java (code included)?

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();

    }

您的豬需要一個屬性來包含您要傳遞的字符串值:

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用作數組的索引

有人說“無法從String轉換為Pig”,因為您不能這樣做!

如果您想以某種方式將String轉換為Pig ,則需要編寫一些代碼來進行轉換。 例如,您可能編寫了一個構造函數,該構造函數根據某種描述創建了一個新的Pig 或者,您可以編寫一種通過名稱,數字或其他方式查找 Pig的方法。

很難提供任何更具體的建議,因為您不會告訴我們字符串值是什么...或您希望字符串如何成為豬。 (我唯一的建議是嘗試Macrame :-))

Pig沒有name成員,甚至沒有接受字符串的方法。 另外,您正在嘗試將String (keyboard.nextline()分配給Pig (pigs [j]。

為您的豬添加一個屬性name

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

然后在循環中分配一個Pig的新實例。

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

也擺脫無用的類pigNumber 您只需要一個PigArrayList 數組列表的大小可以動態調整。

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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM