Справка по вводу переменных массива [закрыть] - PullRequest
0 голосов
/ 16 ноября 2010

Прежде всего, мне нужно создать массив длины n, входные переменные для заполнения этого массива, затем в месте расположения массива k я должен сдвинуть все расположения массивов k и вверх на 1 и поместить значение x в массивместоположение к.Но если k = n, то поместите x в n + 1.

Прежде всего, у меня возникла проблема с работой целых чисел для k и x.По какой-то причине код устанавливает n на первый вход и сразу устанавливает k и x так же, как n, когда установлено n.

Во-вторых, у меня возникают проблемы с расширением массива до n + 1.Я знаю, не просто дать мне ответ, но мне нужно какое-то направление, куда идти.

import java.util.Scanner;
public class hw2
{
   public static void main(String[] args) 
   {
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    int k = scan.nextInt();
    int x = scan.nextInt();
    int[] a = new int[n];
    for(int i = 0; i<n; i++)
    {
     a[i] = scan.nextInt();
    }
    n++;
    final int LENGTH = a.length - 1;
    for(int j=LENGTH; j>k; j--)
    {
     a[j] = a[j-1];
    }
    a[k] = x;
    for(int h = 0; h < n; h++)
    {
     System.out.println("location " + h + " is " + a[h]);    
    }

   }
}

Пример ввода для nkxa [0] ... a [n-1] равен

5  3  7  2  3  5  11  13

соответственно.

После запуска кода с этим вводом n должен = 6, а массив должен быть

a[0] = 2
a[1] = 3
a[2] = 5
a[3] = 7
a[4] = 11
a[5] = 13

РЕДАКТИРОВАТЬ: Я прочитал проблему совершенно неправильно.Подсказка внизу гласила: «Предположим, что массив имеет размер не менее n + 1» ...

Ответы [ 3 ]

0 голосов
/ 16 ноября 2010

Похоже, что все в том числе это нормально:

import java.util.Scanner;
public class hw2
{
   public static void main(String[] args) 
   {
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    int k = scan.nextInt();
    int x = scan.nextInt();
    int[] a = new int[n];
    for(int i = 0; i<n; i++)
    {
     a[i] = scan.nextInt();
    }

После этого он становится немного отрывочным. Проблема может быть интерпретирована несколькими способами ...

, затем в месте расположения массива k введите переменная х. Но если k = n, то положить x в п + 1

Для меня это означает «перезаписать» значение в местоположении k, если только k == n. Что касается пары способов - это зависит от того, как сформулировано ваше задание. Если не имеет значения, с какого размера должен начинаться массив, вы можете начать с размера массива, равного n + 1 (или n + someArbitraryValue) вместо n. Если вам необходимо сохранить размер n или n + 1 в зависимости от проверки k == n, то при k == n вам нужно установить новый массив с размером n + 1 и скопировать в него значения a. *

Надеюсь, это поможет, не отдавая слишком много.

0 голосов
/ 16 ноября 2010

Трудно понять, что вы спрашиваете, потому что ваш код не соответствует тому, что вы написали.Из того, что я понимаю, массив элементов n уже заполнен до отказа.В этом случае вы не можете просто добавить элемент в конце, вам нужно создать новый массив и скопировать все данные из старого массива в новый массив.

Это будет работать примерно так:

int[] oldArr = new int[n]; //old array, full
int[] newArr = new int[2*n];//new array
for(i=0;i<n;i++){
  new[i] = old[i];
}

Затем просто введите k в новом [n + 1], как обычно.Обратите внимание, что если бы массив не был пустым, вам нужно было бы сделать это только в том случае, если вы вставляли x в n.

0 голосов
/ 16 ноября 2010

Вы можете просто использовать ArrayList

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...