Ява: как создать 10 кошек?когда Cat ("cat" + i) = "имя кота" не работает, как на других языках - PullRequest
2 голосов
/ 11 ноября 2010

используя цикл, я могу создать

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 экземпляров Cat ..... cat1, ... cat2 ..... потому что в других языках я могу использовать "cat" || i = ..., чтобы создавать различные переменные, мне интересно, как я могу делать подобные вещи в Java ....

Другими словами, я хочу назвать экземпляры, которые я собираюсь создать, принимая во внимание информацию о цикле.

Ответы [ 10 ]

3 голосов
/ 11 ноября 2010

Это похоже на академическую проблему, поэтому я подойду к ней как таковой.Вам нужно где-то хранить десять кошек.Одно место, где вы можете сделать это, в массиве ..

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);
    }
  } 
} 
3 голосов
/ 11 ноября 2010

Используйте коллекцию, если вы не знаете, сколько у вас будет кошек.

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 голосов
/ 11 ноября 2010
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] ); 
    }
  } 
} 
2 голосов
/ 11 ноября 2010
for (int i=1; i<10; i++){     
   Cat cat = new Cat("Cat" + i);  
   System.out.println("My cat is:  " + cat ); 
}
1 голос
/ 11 ноября 2010

Выше приведено множество ответов, поэтому я просто добавлю, что вы не можете динамически изменять имена переменных в Java, поэтому выделенная жирным шрифтом часть не является:

Кошка ("кошка" + i) = новая кошка ("Кошка 1");

0 голосов
/ 11 ноября 2010

Вы можете создать 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] ); 
      }
   }
}
0 голосов
/ 11 ноября 2010

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

Вы также можете использовать List вместо массива.

0 голосов
/ 11 ноября 2010

Вы можете сделать:

for (int i=1; i<10; i++){
        Cat cat = new Cat("Cat"+i);
        System.out.println("My cat is:  " + cat );
}
0 голосов
/ 11 ноября 2010

Вам нужен массив.

  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 голосов
/ 11 ноября 2010

Вы жестко кодируете номер кошки:

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

Вы должны изменить это на:

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

правый

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...