Эй, мне было интересно, может ли кто-нибудь объяснить это дальше. Это не задание, это просто решение одного из моих тестов, которые у меня были. Я пытался понять это, но я не уверен ..массив булевых элементов для представления набора целых чисел
В основном вопрос для ответа, данного является:
[я] Напишите класс в Java под названием RangeSet, который использует структуру данных array of boolean для представления набора целых чисел, используя 3 метода: [list] [] add - добавляет элемент, но оставляет его неизменным, если элемент уже является членом набора [] remove - удаляет элемент но оставляет значение неизменным, если элемент не является членом набора [*] содержит - возвращает логическое значение, которое указывает, является ли элемент членом набора [/ list]
должен быть один конструктор класса, который принимает целое число n и дает объект, представляющий набор, который может содержать целые числа в диапазоне от 1 до n включительно. Конструктор должен дать пустой набор. Набор должен быть разрушительным. Методы должны возвращать true, если набор был изменен с помощью операции и false, если это не так. [/ I]
В принципе, здесь он представляет собой набор целых чисел, ограниченный диапазоном от 1 до n, реализованный массивом booleans Методы добавления и удаления возвращают логическое выражение, указывающее, был ли набор изменен их вызовом, предполагается, что все аргументы методов add, remove и contains будут находиться в диапазоне от 1 до n, поэтому нет специального кода для обработки с случаями, когда аргумент не находится в зоне действия.
class RangeSet
{
private boolean[] arr;
public RangeSet(int n)
{
arr = new boolean[n];
}
public boolean add(int n)
{
if(arr[n-1]) return false;
arr[n-1]=true;
return true;
}
public boolean remove(int n)
{
if(!arr[n-1]) return false;
arr[n-1]=false;
return true;
}
public boolean contains(int n)
{
return arr[n-1];
}
}
Так я задаюсь вопросом, как же обр = новый логический [п] и добавьте (Int N) оба представлены 'п'? И разве решение не проверяет местоположение вновь введенного целого, а не проверяет фактическое значение? Спасибо.
Ну, код пропускает проверку границ, если это то, что вы имеете в виду. Значение «вне диапазона» 'n' приведет к неявному исключению ArrayIndexOutOfBoundsException, которое, возможно, ОК, но некоторые из них считаются плохими. В противном случае я не могу понять, о чем вы спрашиваете. –