2016-12-05 261 views
0

我基本上被要求获取字符串的Unicode值,将其乘以10%并添加对象当前所具有的任何级别。这是令人沮丧的,因为事实证明,我已经包括代码的逻辑,但我仍然得到一个错误,说:期望:< 0>但是:< 8>。任何建议,也许这只是我必须在逻辑中做出的细微差别,尽管我相当确定它是正确的。 。注意到getLevel方法的,因为那是错误的获取字符串中第一个字符的Unicode值

public class PouchCreature implements Battleable { 

private String name; 
private int strength; 
private int levelUps; 
private int victoriesSinceLevelUp; 

/** 
* Standard constructor. levelUps and victoriesSinceLevelUp start at 0. 
* 
* @param nameIn desired name for this PouchCreature 
* @param strengthIn starting strength for this PouchCreature 
*/ 
public PouchCreature(String nameIn, int strengthIn) { 
    this.name = nameIn; 
    this.strength = strengthIn; 
    this.levelUps = 0; 
    this.victoriesSinceLevelUp = 0; 
} 


/** 
* Copy constructor. 
* 
* @param other reference to the existing object which is the basis of the new one 
*/ 
public PouchCreature(PouchCreature other) { 
    this.name=other.name; 
    this.strength=other.strength; 
    this.levelUps=other.levelUps; 
    this.victoriesSinceLevelUp=other.victoriesSinceLevelUp; 
} 


/** 
* Getter for skill level of the PouchCreature, which is based on the 
* first character of its name and the number of levelUps it has. 
* Specifically, the UNICODE value of the first character in its name 
* taken %10 plus the levelUps. 
* 
* @return skill level of the PouchCreature 
*/ 
public int getLevel() { 
    int value = (int)((int)(getName().charAt(0)) * 0.1); 
    return value + this.levelUps; 
} 

回答

0

你说你应该增加了10%的价值。但是,实际上你在做的是减少 90%,只取其中的10%(然后将其截断为int)。 67.0 * 0.1 = 6.7,当截断为int时为6

更改0.11.1增加它由10%:

int value = (int)((int)(getName().charAt(0)) * 1.1); 
// --------------------------------------------^ 

在那里,如果getName()返回"Centaur"(例如),则C具有Unicode值67,和value最终被73

+0

我的错误,它实际上告诉我们取模量,但谢谢! – yarcenahs

0

我们需要看到您正在调用该类的代码,并且正在生成您的错误消息。为什么期待0? 8似乎是您提供的信息的有效返回值。

相关问题