Реализация алгоритмов java (algo)

Я пытаюсь написать Java-программу для проверки следующего кода

12,8,23,6,5,17,20,9

m=2;
n=0;
while m<array length
repeat
ar[m]=ar[n]+ar[n+1];
m++;
n++;
End while 

Итак, это был мой исходный код

public class Main {

  public static void main(String [] args) {
    int []x= {12,8,23,6,5,17,0,9};
    int m=2;
    int n=0;


    while(m<x.length) {
        x[m]=x[n]+x[n+1];
        m++;
        n++;

        System.out.println(x);

     }

  }
}

И он сгенерировал что-то вроде этого в качестве вывода

[I@3d4eac69
[I@3d4eac69
[I@3d4eac69
[I@3d4eac69
[I@3d4eac69
[I@3d4eac69

Также это был ответ моего учителя

public class Main {

public static void main(String [] args) {
    int []x= {12,8,23,6,5,17,0,9};
    int []y=algo(x); **//need an explanation**

    }
public static int[] algo(int[]ar) { **//need an explanation** 
    int m=2;
    int n=0;
    while(m<ar.length) {
        ar[m]=ar[n]+ar[n+1];
        m++;
        n++;
    }
    return ar;
   }
}

Однако для кода учителя нет сгенерированного вывода, однако ответ должен быть примерно таким 12 8 20 28 48 76 124 200 Пожалуйста, объясните, какой из них лучший и как они работают. Также я прокомментировал некоторые строки кода моего учителя, которые я не могу понять. Пожалуйста, объясните и их.

Используйте Arrays.toString(x) для печати массива.

Ben 30.05.2018 13:17
Глянь сюда о том, как напечатать массив в Java. Что касается остальной части вашего вопроса, поскольку оба кода (предположительно) работают, вы можете перенести это на веб-сайт Обмен стеком для проверки кода.
Tim Biegeleisen 30.05.2018 13:18

не могли бы вы объяснить немного больше, пожалуйста

user7288817 30.05.2018 13:20

Что ж, это плохой обман. Но как бы там ни было. По крайней мере, это объясняет ваш плохой результат. Ваш учитель использует метод. Если вы никогда не видели его, я бы порекомендовал вам поискать учебник по Java. Оба примера кода делают одно и то же, просто у вас по какой-то причине есть странный отпечаток для вашего массива.

Ben 30.05.2018 13:20

Но его код также ничего не выводит. Не могли бы вы объяснить, почему это так?

user7288817 30.05.2018 13:22

import java.util.Arrays; открытый класс Main {public static void main (String [] args) {int [] x = {12,8,23,6,5,17,0,9}; int m = 2; int n = 0; в то время как (m <x.length) {x [m] = x [n] + x [n + 1]; m ++; n ++; Arrays.toString (x); }}} Это также не выводит ничего

user7288817 30.05.2018 13:26

Я могу только переосмыслить: ищите учебник по Java. У вас проблемы с самыми основами.

Ben 30.05.2018 13:26

@Ben Хорошо, большое спасибо

user7288817 30.05.2018 13:27

@Ben Спасибо за работу ('-')

user7288817 30.05.2018 13:31
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
9
32
0

Другие вопросы по теме