Ошибка в выводе массивов по сравнению с вводом

1

У меня есть код ниже, где пользователь должен ввести 5 значений в массив и распечатать то же самое.

package Arrays;

import java.util.Scanner;

public class Arrays {
    public static void main(String[] args) {
        final int size=5;
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the 5 number you want to be stored in an array");
        int a[] =new int[size];
        for(int i=0;i<a.length;i++){
            a[i]=input.nextInt();
        }           
        displayArray(a);
        sumOfArray();
        productOfArray();
        smallAndLargeOfArray();
        averageOfArray();
    }

    private static void displayArray(int arr[]) {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] + ' ');
        }
    }
}

вот мой вклад:

1
2
3
4
5

и выход, который я получаю:

33
34
35
36
37

Пожалуйста, дайте мне знать, где я ошибаюсь, и как я могу это исправить.

  • 0
    Помните, что char в java на самом деле просто целое число. Когда вы пишете arr[i] + ' ' вы фактически добавляете 2 числа, а не объединяете 2 строки.
  • 0
    Другими словами: изменить + ' ' на + " " .
Теги:

3 ответа

7
Лучший ответ

+ Изменить

System.out.println(arr[i] + ' ');

в

System.out.println(arr[i]);

или

System.out.println(arr[i] + " ");

Когда вы печатаете arr[i] + ' ', сначала выражение оценивается как добавление int и char (интегральное значение символа пробела, которое равно 32), и только тогда печатается полученное целое число. Таким образом, все целые числа в вашем массиве смещены на 32 при печати таким образом.

  • 0
    Спасибо за объяснение
2

' ' имеет ascii-код 32. Когда вы используете arr[i] + ' ' вы конвертируете второй операнд в целое и добавляете в первый операнд.

  • 0
    @ khelwood ты прав. фиксированный ответ.
1

В space ASCII значение char равно 32 (десятичное), а char - фактически целое значение. Он добавляется к вашей стоимости int и дает этот результат.

System.out.println(arr[i]);

а также

System.out.println(arr[i]+" ");

решит проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню