2010-11-11 19 views
2

的工作,我可以創造的Java:如何創建10只貓?當貓( 「貓」 + I)= 「貓名」 還不如在使用循環其他語言

My cat is: Cat1 
... 
My cat is: Cat1 

然而,當我試圖用

Cat ("cat"+i) = new Cat("Cat" + i); 

我「M犯錯誤....

那麼,什麼是糾正我的代碼產生

cat1 ... cat10 cat instances? 


public class TestCat{ 
    public static void main(String [] args){ 

for (int i=1; i<10; i++){  
    //Cat ("cat"+i) = new Cat("Cat 1"); 
    Cat cat1 = new Cat("Cat 1"); 
    System.out.println("My cat is: " + cat1); 
    } 
} 
} 

class Cat{ 

static String catName; 
public Cat(String catName){ 
    this.catName=catName; 
} 
public String toString(){ 
    return catName; 
} 
} 
的simplist方式

對不起....我應該說

如何創建10個10 Cat實例..... CAT1,CAT2 ... .....因爲在其他語言,我可以用 「貓」 | | I = ...,以創建不同varaibles,我不知道我怎麼會做類似的事情在Java中....

換句話說,我想說出我要創建實例通過採取循環信息。

+0

貓( 「貓」 + 1)=新的貓(...) 是不可能的,因爲Java不支持動態命名變量。這就是爲什麼其他人提出了一個數組。我個人會使用一個列表。 – 2010-11-11 18:18:53

+0

謝謝你提出另一條路線! – john 2010-11-11 18:37:56

回答

3

如果您不知道您將擁有多少隻貓,請使用集合。

public class TestCat 
{ 
    public static void main(String [] args) 
    { 

    Cat[] cats = new Cat[10];  
    Vector catsUnlimited = new Vector(10);  
    Cat myCat = null; 

    for (int i=1; i<11; i++) 
    {  
    myCat = new Cat("Cat" + i); 
     cats[i-1]= myCat; 

     catsUnlimited.addElement(new Cat("Cat" + i)); 

     System.out.println("My cat is: " + cats[i-1]); 
    } 

    System.out.println("Known cats"); 
    for (int x = 0; x < catsUnlimited.size(); x++) 
    {   
    System.out.println("Cat #" + (x+1) + ":" +(Cat)catsUnlimited.get(x)); 
    }  
    } 
} 

注:此代碼產生不正確的結果,並把我難住了,直到我看了看貓類接近。

My cat is: Cat1 
My cat is: Cat2 
My cat is: Cat3 
My cat is: Cat4 
My cat is: Cat5 
My cat is: Cat6 
My cat is: Cat7 
My cat is: Cat8 
My cat is: Cat9 
My cat is: Cat10 
Known cats 
Cat #1:Cat10 
Cat #2:Cat10 
Cat #3:Cat10 
Cat #4:Cat10 
Cat #5:Cat10 
Cat #6:Cat10 
Cat #7:Cat10 
Cat #8:Cat10 
Cat #9:Cat10 
Cat #10:Cat10 

這裏是罪魁禍首:

public class Cat 
{ 
    static String catName; 

取出static,你是金色的。

+0

很有教育意義!感謝您的時間! – john 2010-11-11 18:49:44

0

你硬編碼的貓數量:

Cat cat1 = new Cat("Cat 1"); 

你應該改變,要:

Cat cat1 = new Cat("Cat " + i); 

,對嗎?

0

你需要一個數組。

String[] cats = new String[10]; 

    for(int i = 0; i < cats.length; i++){ 
    cats[i] = "Cat" + i; 
    } 

這創建並存儲了10只貓。

然後印刷是相似的:

for(int i = 0; i < cats.length; i++){ 
    System.out.println("My cat is " + cats[i]); 
    } 
+0

謝謝!!!這是我需要學習的知識。 – john 2010-11-11 18:17:26

2
for (int i=1; i<10; i++){  
    Cat cat = new Cat("Cat" + i); 
    System.out.println("My cat is: " + cat); 
} 
+0

+1,因爲您從變量名稱中刪除了「1」。 – Daniel 2010-11-11 18:12:39

0

你可以這樣做:

for (int i=1; i<10; i++){ 
     Cat cat = new Cat("Cat"+i); 
     System.out.println("My cat is: " + cat); 
} 
1

上面很多答案所以我就補充一點,你不能動態改變的變量名Java,所以下面粗體部分是nono:

Cat (「cat」+ i) =新貓(「貓1」);

+0

這對我來說確實是一個非常好的點! – john 2010-11-11 18:19:29

2
public class TestCat 
{ 
    public static void main(String [] args) 
    { 

    Cat[] cats = new Cat[10]; 
    for (int i=1; i<11; i++) 
    {  
     cats[i-1]= new Cat("Cat" + i); 

     System.out.println("My cat is: " + cats[i-1]); 
    } 
    } 
} 
+0

不錯!謝謝!如果我們不知道我們需要創造多少隻貓,但是我們至少知道一隻貓呢? – john 2010-11-11 18:16:21

3

這看起來像一個學術問題,所以我會這樣做。你需要在某個地方儲存十隻貓。你能做到這一點的一個地方是在一個數組..

public class TestCat{ 
    public static void main(String [] args){ 

    Cat[] cats = new Cat[10]; 

    // Create my cats 
    for (int i= 0; i < 10; i++) {  
     cats[i] = new Cat("Cat " + i + 1); 
    } 

    // Print them out 
    for (Cat aCat : cats) { 
     System.out.printLn("My Cat is: " + aCat); 
    } 
    } 
} 
0

Java不支持動態命名變量,所以你不能創建「CAT1」到「cat10」有:

Cat ("cat"+i) = new Cat("Cat" + i); 

(順便說一句,什麼語言你從哪裏來?)

Java的方法是創建一個數組(如其他人所說)。如果你不知道你有多少實例需要,可以動態大小的數組:

public class TestCat 
{ 
    static class Cat 
    { 
     private String name; 

     Cat(String name) 
     { 
      this.name = name; 
     } 

     @Override 
     public String toString() 
     { 
      return "Cat{" + 
        "name='" + name + '\'' + 
        '}'; 
     } 
    } 
    public static void main(String[] args) 
    { 
     Cat[] someCats = createCats(10); 
     printCats(someCats); 

     Cat[] lotsaCats = createCats(42); 
     printCats(lotsaCats); 
    } 

    private static void printCats(Cat[] cats) 
    { 
     // Print them out 
     for (Cat aCat : cats) 
     { 
      System.out.println("My Cat is: " + aCat); 
     } 
    } 

    private static Cat[] createCats(int ncats) 
    { 
     Cat[] cats = new Cat[ncats]; 

     // Create my cats 
     for (int i = 0; i < ncats; i++) 
     { 
      cats[i] = new Cat("Cat " + i + 1); 
     } 
     return cats; 
    } 
} 

你也可以使用,而不是一個數組列表。

0

您可以創建ň貓的數量:

代碼:

public class TestCat 
{ 

    public static void main(String [] args) throws IOException 
    { 
     int x=0; 
     DataInputStream in=new DataInputStream(System.in); 
     x=Integer.parseInt(in.readLine()); 
     Cat[] cats = new Cat[x]; 
     for (int i=1; i<x; i++) 
     {  
      cats[i-1]= new Cat("Cat" + i);  
      System.out.println("My cat is: " + cats[i-1]); 
     } 
    } 
}