Мне трудно заставить это работать.Метод 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 () проверит заданное ему число, чтобы увидеть, является ли оно счастливым числом или нет.