使用循环,我可以创建
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中做类似的事情......
换句话说,我想通过考虑循环信息来命名我要创建的实例。
答案 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] );
}
}
}