public class User {
private int[] rank = {-8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8};
private int userRank = rank[0];
private int progress = 0;
public int rank() {
calculateRank();
return this.userRank;
}
public int getProgress() {
return progress;
}
public void incProgress(int ranked) {
if (ranked < -8 || ranked > 8 || ranked == 0) {
throw new java.lang.RuntimeException("Not in range required");
} else {
int indexOfTheRank = indexOf(ranked);
int indexOfCurrentRank = indexOf(this.userRank);
int difference = indexOfTheRank - indexOfCurrentRank;
if (difference == 0) {
progress += 3;
} else if (difference == -1) {
progress += 1;
} else if (difference > 0) {
progress += (difference * difference * 10);
} else {
progress += 0;
}
}
}
private int indexOf(int element) {
int index = 0;
for (int i = 0; i < rank.length; i++) {
if (rank[i] == element) {
index = i;
break;
}
}
return index;
}
private void calculateRank() {
while (progress >= 100) {
this.userRank = rank[indexOf(this.userRank + 1)];
progress -= 100;
}
}
}
下面的代码在我的编辑器中运行良好,但是当我在
Codewars给了我一个
错误:
****After applying rank of -8 the resulting user rank was expected to be -8,
but was actually [I@25d250c6 expected:<-8> but was:<[I@25d250c6>****
我究竟做错了什么?
最佳答案
我只是在Codewars上尝试过此方法……您仍然需要做更多的调试工作,但是您的基本问题是您的某些变量/方法名称和访问修饰符不是Codewars测试用例所需要的:
您的userRank
变量实际上应称为rank
,并且应该是公共的。
您的rank
数组应使用其他名称,以免与上面的名称冲突。
您的progress
变量也应该是公共的。
您的rank
方法应命名为getRank
。
因此,请更改这些代码(以及代码其余部分中对它们的引用),然后应该使该代码更正常了:“将等级应用-4后,预期的用户等级为-7,但实际上是-8应该是:<-7>,但是:<-8>“错误消息。
关于java - 为什么在Codewars编辑器中得到意外的数组 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59593558/