Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从同一类的另一个对象调用变量_Java_Bluej - Fatal编程技术网

Java 如何从同一类的另一个对象调用变量

Java 如何从同一类的另一个对象调用变量,java,bluej,Java,Bluej,所以在最后一个return语句中,我试图获取另一个对象(被攻击的角色)的防御变量。我试着根据这个角色的力量属性取一个随机数,然后创建一个伤害属性。然后我会做伤害防御(从另一个角色)。有人知道我用什么代码吗?PS:请不要畏缩,这是我们这些天在学校学到的东西。从您的描述中,您希望您的方法攻击返回enddam如下: import java.util.Random; public class Character { // instance variables - vervang deze doo

所以在最后一个return语句中,我试图获取另一个对象(被攻击的角色)的防御变量。我试着根据这个角色的力量属性取一个随机数,然后创建一个伤害属性。然后我会做伤害防御(从另一个角色)。有人知道我用什么代码吗?PS:请不要畏缩,这是我们这些天在学校学到的东西。

从您的描述中,您希望您的方法
攻击
返回
enddam
如下:

import java.util.Random;
public class Character
{
    // instance variables - vervang deze door jouw variabelen
    private String _name;
    private double _level;
    private double _strenght;
    private double _speed;
    private double _defense;
    private double _currenthp;
    private double _maxhp;

    /**
     * Voorbeeld van een method - schrijf hier jouw comment
     *
     * @param  y    deze method krijgt deze parameter mee in de aanroep
     * @return    deze method geeft de som van x en y terug
     */
    public Character()
    {
    }

    public Character(String name,double level)
    {
        // schrijf hier jouw code
        _name = name;
        _level = level;
        Random rand = new Random();
        //level voor het berekenen van skills
        int lvl = (int)level;
        //stenght en speed parameter voor random
        int stsplvl = 12*lvl - 8*lvl;
        //defense parameter voor random
        int deflvl = 6*lvl - 4*lvl;
        //hp parameter voor random
        int hplvl = 30*lvl - 20*lvl;
        //Strenght berekenen
        double st = (double)rand.nextInt(stsplvl);
        st = st + 8*lvl;
        _strenght = st;
        //Speed berekenen
        double sp = (double)rand.nextInt(stsplvl);
        sp = sp + 8*lvl;
        _speed = sp;
        //Defense berekenen
        double def = (double)rand.nextInt(deflvl);
        def = def + 4*lvl;
        _defense = def;
        //Hp berekenen
        double hp = (double)rand.nextInt(hplvl);
        hp = hp + 20*lvl;
        _currenthp = hp;
        _maxhp = hp;
    }
    public void Character(String name,double level)
    {
        _name = name;
        _level = level;
    }
    public void ploth()
    {
        System.out.println(_name + ": " + _currenthp + " / " + _maxhp + " HP");
    }
    public int attack(Character _other)
    {
        int defe = super (double._other _defense);
        Random rando = new Random();
        //_strenght is een double
        int damcalc = (int)(1.2 * _strenght - 0.8 * _strenght);
        int netdam = rando.nextInt(damcalc);
        int totdam = (int)(netdam + 0.8*_strenght);
        int enddam = totdam - defe;
    }
}

删除
void
方法
Character
,如果它是一个构造函数,那么您已经有了一个具有相同签名的构造函数。

虽然您可以执行
\u other.\u defence
,但添加getter方法
get\u defence()可能更像Java风格
字符
类并调用它。你真的不应该在字段名中使用uu。。。如果要引用构造函数中的类字段,可以使用“this”,例如this.name=name;谢谢,这似乎比使用super效果更好。我可以一直这样做而不是使用超级吗?或者在某些情况下,super是唯一的选项?@StrangeITperson,不客气,
super
是一个始终指向超类的关键字,因此在这种情况下,例如,如果您有一个
SpecialCharacter
类扩展
Character'类,您可以编写只在
super.attack内编写的
attack'方法(_other)
它会像
字符
超类一样进行攻击。有关应用程序的更多情况,您可以查看
public int attack(Character _other)
{
    int defe = (int)_other._defense;
    Random rando = new Random();
    //_strenght is een double
    int damcalc = (int)(1.2 * _strenght - 0.8 * _strenght);
    int netdam = rando.nextInt(damcalc);
    int totdam = (int)(netdam + 0.8*_strenght);
    int enddam = totdam - defe;
    return enddam;
}