Вставка строкового элемента в начало массива в Java с циклами без исчезновения последнего элемента

#java #arrays #loops

Вопрос:

Создайте алгоритм с использованием языка JAVA, который вставит элемент массива в НАЧАЛО заданного массива.

первые элементы массива выглядят следующим образом:

Джон, Сесиль, Марк, Иуда, Тереза

Пример:

Вставить элемент для вставки: Марта

Новый Обновленный список: Марта, Джон, Сесиль, Марк, Иуда, Тереза

Это моя попытка, к сожалению, «Тереза» в конце продолжает исчезать:

 import java.util.Scanner;


public class ArraySample1 {
    public static void main(String[] args) {
       String[] names = new String[] {"John", "Cecille", "Mark", "Judas", "Theresa"};
       int x = 1, n = 5;
       int i = 0, y = n;

        System.out.println("The original array elements are: ");

       for(i = 0; i < n; i  ){
       System.out.println("NAME["   i   "] = "   names[i]   " ");
       }
    
      Scanner sc = new Scanner(System.in);
      System.out.print("Enter element to insert: ");
      String item = sc.next();
    
      for(i = 0; i < x; i  ){
        for(y = n-1; y > i; y--){ 
        names[y]=names[y-1];
        }
      names[i] = item;
      }             
    
     System.out.println("The array elements after insertion :");

     for(i = 0; i < n; i  ) {
     System.out.println("NAME["   i   "] = "   names[i]   " ");
     }
   }
}
 

Вывод вышеприведенного кода

Как вы можете видеть на фотографии, Тереза исчезает. Я пытался вставить n=n 1 в любом месте кода в надежде увеличить количество элементов, но когда я запускаю программу, она возвращает «за пределами»

Комментарии:

1. конечно, это имя исчезает. Массивы имеют фиксированный размер в Java. Вы не можете просто добавить еще один элемент (в начале или в конце) и ожидать, что он будет работать именно так. Вам нужно будет создать новый массив длиной 1 элемент, заполнить первое место новым элементом, а все последующие-элементами, которые у вас уже были

2. Хорошо, спасибо! Я попробую это сделать

3. Я думаю, что для того, что вы делаете, массив-это неправильно. Вам следует взглянуть на ArrayList. Там вы можете просто вставить элемент, и список массивов автоматически изменит его размер для вас. Выделение полностью нового (большего) массива и копирование всего массива в него-это просто чертовски большие накладные расходы для вставки одного элемента.

4. @Juerrrgen учитывая то, как это сформулировано, это, скорее всего, будет задание. Если это так, и она использует ArrayList, она потерпит неудачу, так как она не выполняет задание

5. Конечно, если это задание, то возврат нового массива-это нормально. Но я бы не рекомендовал делать это в производственном коде.