Java 所以我';我试着编写一个代码,在这个代码中,你可以创建一个包含输入的数组,而输出不是';不完全正确?

Java 所以我';我试着编写一个代码,在这个代码中,你可以创建一个包含输入的数组,而输出不是';不完全正确?,java,arrays,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

这是我的代码:

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);
    }

}
现在,当我按下run键时,我得到以下信息:

您希望阵列的大小是多少

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

[I@55f96302


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

使用
Arrays.toString()
。以下就是您遇到的问题。通过编写
System.out.println(arr);
您正在打印数组的默认字符串表示形式。请检查此项

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

1-对于
arrSize!=1
,永远不会验证for循环中的条件

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

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

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

完整代码
导入java.util.array;
导入java.util.Scanner;
公共阶级泡沫{
公共静态void main(字符串[]args){
字符串前缀;
int-arr[];
扫描仪阅读器=新扫描仪(System.in);
System.out.println(“您希望阵列的大小是多少?”);
int arrSize=reader.nextInt();
arr=新整数[arrSize];
对于(int i=1;i使用
Arrays.toString()
。以下就是您遇到的问题。通过编写
System.out.println(arr);
您正在打印数组的默认字符串表示形式。请检查此项

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

1-对于
arrSize!=1
,永远不会验证for循环中的条件

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

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

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

完整代码
导入java.util.array;
导入java.util.Scanner;
公共阶级泡沫{
公共静态void main(字符串[]args){
字符串前缀;
int-arr[];
扫描仪阅读器=新扫描仪(System.in);
System.out.println(“您希望阵列的大小是多少?”);
int arrSize=reader.nextInt();
arr=新整数[arrSize];

对于(int i=1;i),无论使用什么整数,它都保持不变这是因为您没有打印整数。您打印的是整数数组。您的代码还有很多问题-您的
for
循环使用了错误的索引和不正确的继续条件。您需要在调试此问题之前修复它们。您打印的是内存中的地址,而不是内存中的值array@G2M是我s不是“内存中的地址”,它是对象的默认值
toString()
,其中包含标识哈希码(理论上可能是从内存地址派生的,但通常不是)。@MarkrotVeel duely注意到:)“无论我使用什么整数,它都保持不变。”这是因为您没有打印整数。您打印的是整数数组。您的代码还有很多问题-您的
for
循环使用了错误的索引和不正确的继续条件。您需要在调试此问题之前修复它们。您打印的是内存中的地址,而不是内存中的值array@G2M是我它不是“内存中的地址”,它是对象的默认
toString()
,其中包含标识哈希码(理论上可能是从内存地址派生的,但通常不是)。@markrottveel duely注意到:)我会试试的谢谢你,我在任何地方都找不到。我已经找了好几个小时了。谢谢你,我在任何地方都找不到。
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));
    }
}