与输入相比,数组输出出错

时间:2014-11-26 07:56:18

标签: java

我有下面的代码,用户必须在数组中输入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

请让我知道我哪里出错了,我该如何解决这个问题。

3 个答案:

答案 0 :(得分:7)

更改

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

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

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

当您打印arr[i] + ' '时,首先将表达式评估为添加intchar(空格字符的整数值,即32),以及只有这样才能打印出结果整数。因此,当以这种方式打印时,数组中的所有整数都会偏移32。

答案 1 :(得分:2)

' '具有ascii代码32.当您使用arr[i] + ' '时,将第二个操作数转换为整数并添加到第一个操作数。

答案 2 :(得分:1)

在ASCII space中char值为32(十进制),char实际上是一个整数值。它会被添加到你的int值并提供输出。

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

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

将解决问题。