#java #arrays #string
#java #массивы #строка
Вопрос:
У меня возникают трудности с этими методами в моем коде, к сожалению, они должны быть строковыми массивами.
(часть кода, которую я не получил)
import java.util.Scanner;
public class SortedStringArray {
private Scanner input = new Scanner(System.in);
private String[] list = new String[10];
// default
public SortedStringArray() {
String[] list = new String[10];
}
// initial
public SortedStringArray(int initialCapacity) {
String[] list = new String[initialCapacity = input.nextInt()];
}
// insert
public void insertItem(String item) {
int i = list.length;
int n = i;
String[] list2 = new String[n];
for (int cnt = 0; cnt < list.length; cnt ) {
list2[cnt] = list[cnt];
}
}
// print
public void print() {
System.out.println(list);
}
// isAvailable
public boolean isAvailable(String item) {
return true;
}
// get index
public int getIndex(String item) {
int index = -1;
for(int i=0; i < list.length; i ) {
index = i;
break;
}
return -1;
}
// delete
public void delete(int index) {
System.out.println("Deleting an Item: ");
String item = input.next();
// not available
if (list == null || index < 0 || index >= list.length) {
System.out.println(item " is NOT available in sorted array to delete !");
}
String[] list2 = new String[list.length - 1];
for (int i = 0, k = 0; i < list.length; i ) {
if (i == index) {
continue;
}
list2[k ] = list[i];
}
// return array
System.out.println(item " is deleted from sorted string array !");
}
// size
public int size() {
return list.length;
}
// frequency of item
public int frequencyOfItem(String item) {
}
}
Текущий отсортированный массив размером: 24
A A A F H H I J K K M M M N O O O Q R X X Y Z Z
Поиск элемента: G НЕДОСТУПЕН в отсортированном строковом массиве
Удаление элемента: R удаляется из отсортированного массива строк!
Текущий отсортированный массив размером: 23 A A A F H H I J K K M M M N O O O Q X X Y Z Z
Частота элемента: количество вхождений L равно 0
Комментарии:
1. Почему бы вам не использовать
ArrayList
вместо этого? В любом случае он поддерживается массивом объектов. И в нем есть большинство методов, которые вам нужны.2. В чем ваша проблема?
3. Предполагается, что не использовать ArrayList будет непросто.
4. Целая куча вещей, в основном, как выполнить метод isAvailable и метод frequencyOfItem
Ответ №1:
Если это сложно, вот несколько советов:
isAvailable()
метод — просто выполните итерацию по вашему массиву и сравните строки сequals()
методом. Если вы найдете один — вернитеtrue
, в противном случае —false
.frequencyOfItem()
метод — такой же, как указано выше, но вам также понадобится счетчик для подсчета количества разequals()
, когда метод вернул true . Просто верните это число.delete()
метод — сдвиньте все значения с правой стороны удаляемого объекта влево (их новые индексы (i) будут i — 1). Используйте полеint
типа для хранения количества значений в вашем списке массивов. (list.length() != size()
).insertItem()
— найдите правильный индекс для вставки (это отсортированный массив, верно?), сдвиньте все значения, начиная с найденного индекса, вправо (i 1). Вставьте новый элемент в найденный индекс. Примечание: вам придется перестроить массив, если для новых элементов недостаточно места. Взгляните наArrays.copyOf()
метод.