Java:如何创建10只猫?当Cat(“cat”+ i)=“cat name”不能像其他语言一样工作时

时间:2010-11-11 18:03:21

标签: java string loops

使用循环,我可以创建

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

然而,当我尝试使用

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

我犯了错误....

那么,纠正我的代码以生成

的简单方法是什么
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;
}
}

抱歉......我应该说

如何创建10个10个Cat实例..... cat1,... cat2 .....因为在其他语言中,我可以使用“cat”|| i = ...来创建不同的变量,我想知道如何在Java中做类似的事情......

换句话说,我想通过考虑循环信息来命名我要创建的实例。

10 个答案:

答案 0 :(得分: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);
    }
  } 
} 

答案 1 :(得分: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));
    }    
  } 
} 

注意:这段代码会产生不正确的结果,让我难以理解,直到我仔细观察Cat类。

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,你就是金色。

答案 2 :(得分:2)

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

答案 3 :(得分: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] ); 
    }
  } 
} 

答案 4 :(得分:1)

上面有很多答案,所以我只想补充一点,你不能在Java中动态更改变量名,所以下面的粗体部分是nono:

Cat (“cat”+ i) =新Cat(“Cat 1”);

答案 5 :(得分:0)

你正在硬编码猫号:

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

您应该将其更改为:

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

右?

答案 6 :(得分: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]);
  }

答案 7 :(得分:0)

你可以这样做:

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

答案 8 :(得分:0)

Java不支持动态命名变量,因此您不能通过“cat10”创建“cat1”:

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;
    }
} 

您也可以使用List而不是数组。

答案 9 :(得分:0)

您可以创建 n 数量的猫:

<强>代码:

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] ); 
      }
   }
}