Как распечатать только последний элемент массива? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь напечатать последний элемент моего массива. Код можно увидеть ниже:

double [] results = new double[21];
double t = 9600;

for(int y = 0; y < 21; y++) {

    results[y] = t;
    t *= 1.04;

    System.out.println(results[results.length - 1]);

}

Однако, когда я пытаюсь запустить это, я получаю такой результат:

0.0 (printed 20 times in a row)
...
21034.782173120842 

Я не знаю, почему он печатает 20 нулей, а затем мне нужен ответ (21034.78). Я думал, что при выполнении results[results.length - 1] будет напечатан только последний элемент массива. У меня есть подозрение, что это связано с циклом, но я не знаю, почему или как это исправить.

Любая помощь или совет будет принята с благодарностью. Спасибо!

Ответы [ 4 ]

0 голосов
/ 16 января 2019

Вам нужно сделать небольшое изменение. Вот одна вещь, которую вы можете сделать:

double [] results = new double[21];
double t = 9600;

for(int y = 0; y < results.length; y++) {


        results[y] = t;
        t *= 1.04;
        System.out.println(results[y]);

    }

Вы можете печатать текущий индекс [y] каждый раз через цикл. Или же вы всегда печатаете индекс 21, который еще не заполнен и будет постоянно печатать 0, пока он не будет заполнен. Текущая итерация цикла [y] всегда будет последним индексом, в котором действительно есть значение, но последний индекс фактически не будет заполнен значением до последней итерации цикла, которая объясняет вашу ошибку здесь.

0 голосов
/ 16 января 2019

Вам нужно переместить оператор печати за пределы цикла ..

double [] results = new double[21]; double t = 9600;

for(int y = 0; y < 21; y++) {

    results[y] = t;
    t *= 1.04;

}
System.out.println(results[results.length - 1]);
0 голосов
/ 16 января 2019

выведите ваш System.out.println из цикла.

for(int y = 0; y < 21; y++) {
     ** YOUR LOGIC **
   }
    System.out.println(results[results.length - 1]);
0 голосов
/ 16 января 2019

Вам нужно поместить System.out.println вне цикла for, иначе вы всегда будете печатать 0.0, потому что последний индекс массива еще не заполнен.

double [] results = new double[21];
double t = 9600;

for(int y = 0; y < 21; y++) { 
        results[y] = t;
        t *= 1.04;
}

System.out.println(results[results.length - 1]);

Выход: 21034.782173120842

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