【发布时间】:2011-06-28 00:46:57
【问题描述】:
我很难让它发挥作用。每次将某些内容添加到数组时都会调用 isLoop() 方法,以确保没有重复项。当有重复时,它应该返回 true。但事实并非如此。
isLoop(){
if(!Arrays.asList(SQUARES).contains(sq)){
return false;
}else{
return true;
}
}
我是否遗漏了有关数组的一些基本知识?我对Java相当陌生,所以可能就是这样! :D
编辑
我被要求展示对象是如何被实例化的,所以我在这里发布了整个课程:
class Happy {
static int SQUARES[] = new int[10000];
static int sq;
public static boolean isHappy(int num){
int s = 0;
int n = num;
int i=0;
for(sq = num; (!isLoop()) && (sq > 1);){
sq = addSquaresOfDigits(sq);
SQUARES[i] = sq;
i++;
}
if(isLoop()){
return false;
}else{
return true;
}
}
static int addSquaresOfDigits(int number) {
int result = 0;
int tmp;
while(number > 0) {
tmp = number % 10;
result += tmp * tmp;
number /= 10;
}
return result;
}
static boolean isLoop(){
if(!Arrays.asList(SQUARES).contains(sq)){
return false;
}else{
return true;
}
}
方法 isHappy() 将测试给它的数字是否为happy number。
【问题讨论】:
-
SQUARES 包含什么?它是您定义的类型吗?可能是你有一个错误的
equals()实现。 -
什么是平方?最初添加到数组中的是什么? sq的类是否覆盖了equals()方法?
-
sq 是要添加到数组中的项目的当前值。它不会覆盖 equals() 方法
-
Lewis 什么类型的物体是方形的?