Хорошо, это, вероятно, встретит очень простой вопрос, но, честно говоря, я новичок в кодировании, и я столкнулся с кирпичной стеной здесь. Мне нужно вставить значение в массив, сдвинуть данные вправо и обновить размер массива. Профессор предоставил комментарии для нас, чтобы структурировать наш код, и у меня есть большая часть его, но эта последняя часть меня убивает. Может ли кто-нибудь помочь? Вот код (соответствующая часть находится под // значения вставки и сдвиг данных ... и т.д.):При полной ошибке с кодом обработки java-списка
public class List {
// Declare variables
private int size = 0;
private int maxSize = 100;
private int[] data;
Scanner keyboard = new Scanner(System.in);
// constructors
public List() {
data = new int[maxSize];
}
public List(int maxSize) {
this.maxSize = maxSize;
data = new int[maxSize];
}
// methods
// Adds a value into the array and updates the size
public boolean add(int value) {
if (size == maxSize) {
System.out.println("Cannot add value since the list is full");
return false;
}
data[size] = value;
size++;
return true;
}
// add multiple values to the list obtained from the keyboard
public void addValues() {
// declare local variables
int count = 0;
System.out.println("Enter multiple integers separated by spaces");
String line = keyboard.nextLine();
Scanner scanLine = new Scanner(line);
try {
while (scanLine.hasNext()) {
data[size] = scanLine.nextInt();
count++;
size++;
}
} catch (ArrayIndexOutOfBoundsException aiobe) {
System.out.println("Only " + count + " values could be added before the list is full");
return;
} catch (InputMismatchException ime) {
System.out.println("Only " + count + " values could be added due to invalid input");
return;
}
}
// This will print all the elements in the list
public void print() {
System.out.println();
for (int i = 0; i < size; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
// This methods returns the index of the key value if found in the list
// and returns -1 if the key value is not in the list
public int find(int key) {
for (int i = 0; i < size; i++) {
if (data[i] == key) {
return i;
}
}
return -1;
}
// This methods deletes the given value if exists and updates the size.
public boolean delete(int value) {
int index = find(value);
if (index == -1) {
System.out.println("The specified value is not in the list");
return false;
}
for (int i = index; i < size - 1; i++) {
data[i] = data[i + 1];
}
size--;
return true;
}
// This methods inserts the value at the given index in the list
public boolean insertAt(int index, int value) {
// validate index value and insertability
if (index < 0 || index > size || size == maxSize) {
System.out.println("Invalid index or list is already full");
return false;
}
// insert value and shift data to the right and update the size
return true;
}
// This method removes the value at given index and shifts the data as needed
public boolean removeAt(int index) {
if (index >= 0 && index < size) {
for (int i=index+1; i<size; i++)
data[i-1] = data[i];
size--;
return true;
}
return false;
}
// This method sorts the values in the list using selection sort
public void sort() {
int temp;
for (int j=size; j>1; j--) {
int maxIndex = 0;
for (int i=1; i<j; i++)
if (data[maxIndex] < data[i])
maxIndex = i;
temp = data[j-1];
data[j-1] = data[maxIndex];
data[maxIndex] = temp;
}
}
}
Я прошу прощение, если код структурирован действительно ужасно, а, кстати, я не был уверен, как отформатируйте его на этом сайте, чтобы он выглядел правильно.
Никто не только собирается сделать это для вас, пожалуйста, дайте нам знать, что вы пробовали и что не работает. – Thomas
класс немного несовместим, add не добавляет новые значения, когда список заполнен. addValues не заботится об этом. Что произойдет с переполнением при вызове insertAt и заполнением списка? Последний элемент выкинут? Как правило, это помогает большинству, если вы запишете, что такое решение (на словах, псевдо-код или что-то такое) - не пытайтесь решить проблему в начале кода, который вы напишете, тогда –