Проблема с обращением каждого числа в массиве в Java - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь изменить каждое число в массиве Integer с помощью do-while, но получаю ошибку NullPointerException. Я пытаюсь обратить каждый элемент в этом массиве: например, если это мой массив: {12,34, 56} тогда результат должен быть: {21,43,65}. Может кто-нибудь помочь мне с этим?

public class Reverse {
  public int[] revCalculator(int[] number) {
    int[] reverse = null;
    for (int j = 0; j < number.length; j++) {
        do {
            reverse[j] = reverse[j] * 10 + number[j] % 10;
            number[j] /= 10;
        } while (number[j] > 0);
    }
    return reverse;
  }
}

public class ShowReverse {

  public static void main(String[] args) {

    // instantiation
    // -----------------------------------------
    Reverse rev = new Reverse();
    @SuppressWarnings("resource")
    Scanner in = new Scanner(System.in);


    System.out.println("Enter The Number Of Elements: ");
    int len = in.nextInt();
    int[] numbers = new int[len];


    for (int i = 0; i < len; i++) {
        System.out.println("Enter Number: ");
        numbers[i] = in.nextInt();
    }


    int[] result = rev.revCalculator(numbers);

    // shows the result
    // -----------------------------------------
    System.out.println("THE REVERSE WOULD BE: ");
    System.out.print(result);

  }
}

рис

Ответы [ 3 ]

0 голосов
/ 19 апреля 2019

Я бы порекомендовал инициализировать обратный массив массивом той же длины, что и массив чисел.

int[] reverse = new int[number.length];
0 голосов
/ 19 апреля 2019

Необходимо внести пару изменений:

  1. инициализировать обратный массив int[] reverse = new int[number.length];
  2. System.out.print(result); даст вам адрес массива результатов,Вы должны показать элементы массива.

    int[] result = new int[numbers.length];
    result = rev.revCalculator(numbers);
    
    // shows the result
    // -----------------------------------------
    System.out.println("THE REVERSE WOULD BE: ");
    //System.out.print(result);
    for(int i = 0 ; i<result.length; i++)
        System.out.println(result[i]);
    

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

0 голосов
/ 19 апреля 2019

Вы не инициализировали свою переменную reverseArray, инициализируйте ее так:

ОБНОВЛЕНИЕ, я вижу, что вы пытаетесь сделать, вы хотите изменить значения вашего массива, а не самого массива

public int[] revCalculator(int[] number) {
    int[] reverse = new int[number.length]; //Initialize it to the same size as the passed in arary
    //int[] reverse = null; //Problem
    StringBuilder sb = new StringBuilder();
    for (int j = 0; j < number.length; j++) 
    {
        //You could convert the number to string then reverse it and use parseInt() int
        reverse[j] = parseInt(sb.append(number[j].toString()).reverse().toString());
        //Clear the StringBuilder object
        sb.setLength(0);

    }
    return reverse;
}
...