2017-04-20 58 views
-3

Dears, 我是java新手,想知道是否可以编写能够从不同类中获取新变量的确切值的代码。我想让int计算变量怪物。JAVA:使用来自不同类别的NEW变量值

ORG int // private static int monsterexp = elliador.monsters.getExp(monsters.exp);/ 我想让它通过特定的怪物来计算: private static int monsterexp = elliador.monsters.getExp(怪物。zombie .exp); 如果你还会分享一种技巧,如何识别代码中的“变量”变量,这将是非常棒的(我的意思是我不必在其中写入僵尸,但它会选择僵尸或九头蛇取决于其他无效那会选择怪物)。 大概我是混合在一起...非常感谢你的支持。

package elliador; 

import elliador.monsters; 


class source { 

private String name; 
private static int experience; 
private static int attack; 
private static int defense; 
private static int magic; 


private static int monsterexp = elliador.monsters.getExp(monsters.exp); 
private static int countofcreatures = 25; 
private static int earnexp = countofcreatures * monsterexp; 



public source(String name,int experience, int attack, int defense, int magic) { 

    this.name = name; 
    this.experience = experience; 
    this.attack = attack; 
    this.defense = defense; 
    this.magic = magic; 

} 

public void myhero() { 
    System.out.println("Name: " + getName() + " Experience: " + getExperience() + " Attack: " + getAttack() + " Defense: " + getDefense() + " Magic: " + getMagic()); 
} 

public String getName() { 
    return name; 
} 

public void setName() { 
    this.name = name; 
} 

public int getExperience() { 
    return experience; 
} 

public void setExperience() { 
    this.experience = experience + earnexp; 
} 

public int getAttack() { 
    return attack; 
} 

public void setAttack() { 
    this.attack = attack + 1; 
} 

public int getMagic() { 
    return magic; 
} 

public void setMagic() { 
    this.magic = magic + 1; 

} 

public int getDefense() { 
    return defense; 
} 

public void setDefense() { 
    this.defense = defense + 1; 
} 

} 

类怪物

package elliador; 

import elliador.heroes; 

class monsters { 

private String name; 
private static int attack; 
private static int defense; 
private static int magic; 
public static int exp; 

public monsters(String name, int attack, int defense, int magic, int exp) { 

    this.name = name; 
    this.attack = attack; 
    this.defense = defense; 
    this.magic = magic; 
    this.exp = exp; 

} 

//*how to use specific monster in the int mentioned in description?*/ 
public static int getExp (int exp) { 
monsters zombie = new monsters("zombie",1,0,0,1); 
monsters hydra = new monsters("Hydra",20,12,3,2); 

return monsters.exp; 

} 



public static int getAttack (int attack) { 

monsters zombie = new monsters("zombie",1,0,0,1); 


//*monsters hydra = new monsters("Hydra",20,12,3,1); 
return monsters.attack; 
} 

} 

类英雄

package elliador; 

import elliador.monsters; 

public class heroes { 

    public static void main (String[] args) throws InterruptedException { 
    source Olsen; 
    Olsen = new source("Olsen",0,1,1,1); 



    Integer i = new Integer(5); 
    Integer i2 = new Integer (5); 
    System.out.println(i.equals(i2)); 
    Olsen.myhero(); 
    Olsen.setExperience(); 
    Olsen.myhero(); 
    Olsen.setExperience(); 
    Olsen.myhero(); 
    Olsen.setAttack(); 
    Olsen.setMagic(); 
    Olsen.myhero();  
    } 

    } 
+0

将怪物变成集合。 – LazerBanana

+2

请格式化您的代码,看来您还没有格式化所有代码。 –

+1

请提供[mcve]。 –

回答

0

创建表示单个怪物的类。

package elliador; 

class Monster { 

private String name; 
private int attack; 
private int defense; 
private int magic; 
private int exp; 

public Monster(String name, int attack, int defense, int magic, int exp) { 

    this.name = name; 
    this.attack = attack; 
    this.defense = defense; 
    this.magic = magic; 
    this.exp = exp; 

} 

public int getExp ({ 
return exp; 
} 



public int getAttack() { 
return attack; 
} 

} 

阅读封装,并添加其余的getters。

然后创建一个所有怪物的集合。

List<Monster> monsters = new ArrayList<>(); 

添加怪物

monsters.add(new Monster("Godzilla", 999, 999, 999, 999)); 

通过指数

monsters.get(0); 

获取特定的怪物或者创建一个类扩展集,并覆盖get方法的名称等,以获得它

或者创建一个关键字是名字的地图,属性是属性列表。

和英雄一样,你可以创建一个名为Game的类,并做你需要的。

PS。按照Java惯例,类名以大写字母开头。

+0

与我在问题评论中写到的问题相同:如果创建多个“Monster”,则静态变量将导致意外的值。 –

+0

非常感谢! – TommyTom

+0

忘了删除静态,然后右键。 – LazerBanana