У меня есть код ниже, где пользователь должен ввести 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
Пожалуйста, дайте мне знать, где я ошибаюсь, и как я могу это исправить.
+ Изменить
System.out.println(arr[i] + ' ');
в
System.out.println(arr[i]);
или
System.out.println(arr[i] + " ");
Когда вы печатаете arr[i] + ' '
, сначала выражение оценивается как добавление int
и char
(интегральное значение символа пробела, которое равно 32), и только тогда печатается полученное целое число. Таким образом, все целые числа в вашем массиве смещены на 32 при печати таким образом.
' '
имеет ascii-код 32. Когда вы используете arr[i] + ' '
вы конвертируете второй операнд в целое и добавляете в первый операнд.
В space
ASCII значение char равно 32 (десятичное), а char - фактически целое значение. Он добавляется к вашей стоимости int и дает этот результат.
System.out.println(arr[i]);
а также
System.out.println(arr[i]+" ");
решит проблему.
char
в java на самом деле просто целое число. Когда вы пишетеarr[i] + ' '
вы фактически добавляете 2 числа, а не объединяете 2 строки.+ ' '
на+ " "
.