Как исправить индексы массива так, чтобы было выбрано правильное значение - PullRequest
0 голосов
/ 30 августа 2018

Я должен ввести число, определяющее размер моего массива, а затем следующие добавленные числа являются фактическими значениями, которые необходимо учитывать, а затем взять последние два целых числа и использовать их в качестве индексов массива, с которым я нахожу конкретные числа, которые я хочу умножить вместе.

Например, я введу 9 3 7 10 18 70 6 4 3 5, где 9 говорит, что после меня будет 9 целых чисел, а 3 и 5 - это индексы, значения которых я хочу. Это 10 и 70, так что мой результат должен быть 700.

Сканер, X и Y объявлены в другом месте.

int intNumber = in.nextInt();
array = new int[intNumber];
for (int a = 0; a < intNumber; a++) {
      array[a] = in.nextInt();
      x = array[array[array.length-1]];
      y = array[array[array.length-2]];
} 
System.out.println(x * y);

Вместо того, чтобы смотреть на индексы 3 и 5 и использовать эти значения, он идет к индексам 4 и 6 и использует их. Я полагаю, это потому, что мой массив действительно начинается с 3 после 9, но как я могу учесть это, все еще получая правильные индексы из конца массива? Три должны быть в индексе 1, и это на самом деле в 0, который сдвигает все мои значения. Я не могу добавить 9 в массив, потому что мне нужно, чтобы он был отдельным, чтобы знать, сколько он будет содержать целых чисел, но я не знаю, как это исправить.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Извините, ваш вопрос немного смутил, но кое-что, что поможет вам в Java, это то, что массивы проиндексированы на 0. Так что, если бы я вручную собрал ваш массив, он бы выглядел так:

array[0] = 3;
array[1] = 7;
array[2] = 10;
array[3] = 18;
array[4] = 70;
array[5] = 6;
array[6] = 4;
array[7] = 3;
array[8] = 5;

Если я понимаю ваш вопрос, то я думаю, что ваш ответ -

x = array[array[array.length-1] - 1];
y = array[array[array.length-2] - 1];

Надеюсь, это поможет.

0 голосов
/ 30 августа 2018

Код работает так, как должен. Если вы хотите запустить массив с индекса 1, измените переменную a на 1, а также увеличьте размер массива на 1.

int intNumber = in.nextInt();
array = new int[intNumber+1];
for (int a = 1; a <=intNumber; a++) {
  array[a] = in.nextInt();

} 
 x = array[array[array.length-1]];
 y = array[array[array.length-2]];
System.out.println(x * y);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...