2015-02-24 3 views
0

Существует алфавит объект букв и если INT передается в параметре метода wrapObject находится вне границы, метод должен обернуть его обратно соответственно. Если объект является «ABC», а переданное значение равно 5, поэтому он должен вернуться к письму C Я сделал здесь что-то, но моя проблема в том, что если пройденный int i намного больше - например, 1000 или отрицательный число, чем длина объекта.Из связанной длины строки()

Alphabet anyWord; 
public int wrapInt(int i) 
    { 
     if (i > anyWord.length()) 
      return (i-alphabet.length()); 
     else 
      return i; 
} 
+0

Вы ищете по модулю (''%) оператора. Если задано целое число 'i' и некоторое максимальное значение' max', выражение 'i% max' даст вам остаток' i/max'. – Jon

+0

Используйте модуль вместо того, чтобы вычесть его из длины, i% alphabet.length() –

+0

Я сделал оператор modulo, но что, если число отрицательно, например (-100% alphabet.length()), все равно будет давать отрицательное число? ? – jordan

ответ

0

Try:

Alphabet anyWord; 

public int wrapInt(int i) 
    { 
     if (i > anyWord.length()) 
      return (i%alphabet.length()); 
     else 
      return i; 

}

1

Попробуйте что-то вроде:

return Math.abs(i) % alphabet.length(); 
+0

Это будет гарантировать, что индекс находится в 'alphabet', но это не так, как работает отрицательная индексация. – Jon

+0

Я понял для позитивных чисел, но для отрицательных чисел: если имеется 95 символов, а переданное значение равно -5, то оно должно возвращать 89. Для отрицательных чисел метод должен вычисляться в обратном порядке. Это моя проблема. – jordan

Смежные вопросы