所以我试图制作一个代码,你用输入创建一个数组,输出不是很正确?

时间:2017-11-17 17:17:23

标签: java arrays

好的,这是我的代码:

import java.util.Scanner;
public class Bubble {

    public static void main(String[] args) {
        String prefix;
        int arr[];
        Scanner reader = new Scanner(System.in);
        System.out.println("What size would you like your array to be?");
        int arrSize = reader.nextInt();
        arr = new int[arrSize];
        for(int i = 1; i==arrSize; i++) {
            if((i % 10)==1 && i != 11) {
                prefix = "st";
            }else if((i % 10)==2 && i != 12) {
                prefix = "nd";
            }else if((i % 10)==3 && i != 13) {
                prefix = "rd";
            }else{
                prefix = "th";
            }

            System.out.println("What would you like the"+ i + prefix +"number in the array to be?");
            int arrNum = reader.nextInt();

        }
        System.out.println(arr);
    }

}

现在当我按下跑步时,我得到了这个:

您希望阵列的大小是多少?

然后我输入一个整数,比如3,然后我得到了这个:

[I @ 55f96302

无论我使用什么整数,它都保持不变。

1 个答案:

答案 0 :(得分:2)

使用Arrays.toString()。这是您遇到的问题的a great writeup。通过编写System.out.println(arr);,您将打印数组的默认字符串表示形式。请检查此answer

据我所知,您试图允许用户使用arrSize创建一个数组,然后允许他将值放入数组中。但是,您的代码存在一些问题:

1 - 您的for循环中的条件永远无法验证arrSize != 1

2 - 要将值保存在已定义的数组中,您应该将从扫描程序arrNum读取的值分配给数组位置i-1(以避免ArrayIndexOutOfBoundsException)。

3 - 不要忘记关闭扫描仪。这非常重要,因为如果不关闭程序,它可能会在程序执行期间导致内存泄漏。

您可以在下面找到对代码的修改。

完整代码

import java.util.Arrays;
import java.util.Scanner;
public class Bubble {

    public static void main(String[] args) {
        String prefix;
        int arr[];
        Scanner reader = new Scanner(System.in);
        System.out.println("What size would you like your array to be?");
        int arrSize = reader.nextInt();
        arr = new int[arrSize];
        for(int i = 1; i<=arrSize; i++) {

            if((i % 10)==1 && i != 11) {
                prefix = "st";
            }else if((i % 10)==2 && i != 12) {
                prefix = "nd";
            }else if((i % 10)==3 && i != 13) {
                prefix = "rd";
            }else{
                prefix = "th";
            }

            System.out.println("What would you like the "+ i + prefix +" number in the array to be?");
            int arrNum = reader.nextInt();
            arr[i-1] = arrNum;
        }

        reader.close();        
        System.out.println(Arrays.toString(arr));
    }
}