Java inputstreamreader解析为int,然后反转数组并作为格式化字符串打印

Java inputstreamreader解析为int,然后反转数组并作为格式化字符串打印,java,arrays,Java,Arrays,输入来自InputStreamReader。第一个输入需要从String转换为int,并且将是数组length。第二个输入将是一个由空格分隔的数字组成的字符串,它们需要从字符串转换为int,放入int数组,反转后打印为空格和逗号分隔的字符串 例如,如果用户输入3作为初始输入,则应将数组长度设置为[3]。13的第二次输入 将作为 3 2 1 我放了一些系统输出来检查返回的内容,但是我得到了I@错误 如果有人能指出我要去哪里,或者我需要更详细地了解哪一点,我将不胜感激 import java.io

输入来自
InputStreamReader
。第一个输入需要从
String
转换为
int
,并且将是数组
length
。第二个输入将是一个由空格分隔的数字组成的
字符串
,它们需要从
字符串
转换为
int
,放入
int
数组,反转后打印为空格和逗号分隔的
字符串

例如,如果用户输入
3
作为初始输入,则应将数组
长度设置为
[3]
13的第二次输入

将作为

3 2 1
我放了一些系统输出来检查返回的内容,但是我得到了
I@
错误

如果有人能指出我要去哪里,或者我需要更详细地了解哪一点,我将不胜感激

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) throws java.lang.Exception {
        String line;
        String stNew;

         BufferedReader inp = new BufferedReader (new InputStreamReader(System.in));

        // first input which sets array length
        line = inp.readLine();
        stNew = inp.readLine();

        //first input as array size and create array
        int iArrayLength = Integer.parseInt(line);
        int[] list = new int[iArrayLength];

    //  System.out.println(list + " list[] ");

        //second input to populate array
        String[] stArray = stNew.split(" ");

    //  System.out.println(stArray + " stArray[]")

        for (int i = 0; i < iArrayLength; i++ ){
            list[i] = Integer.parseInt(stArray[i]);
        }

    //  System.out.println(list + " list[] ");

        while (stArray.length != iArrayLength) {
            System.out.println("Please input " + iArrayLength + " integers");

            for (int i = 0; i < iArrayLength; i++) {
                list[i] = Integer.parseInt(stArray[i]);
            }

            for (int i = 0; i < list.length / 2; i++) {
                int temp = list[i];
                list[i] = list[list.length - 1 - i];
                list[list.length - 1 - i] = temp;
            }
        }
        System.out.println(list.toString());
    }
}
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.util.array;
公共班机{
公共静态void main(字符串[]args)引发java.lang.Exception{
弦线;
字符串stNew;
BufferedReader inp=新的BufferedReader(新的InputStreamReader(System.in));
//设置数组长度的第一个输入
line=inp.readLine();
stNew=inp.readLine();
//首先输入数组大小并创建数组
int iArrayLength=Integer.parseInt(行);
int[]list=新的int[iArrayLength];
//System.out.println(list+“list[]”);
//填充数组的第二个输入
字符串[]stArray=stNew.split(“”);
//System.out.println(stArray+“stArray[]”)
对于(int i=0;i
这些消息不是错误,这是Java中默认打印
对象的方式

数组
是一个
对象
,不定义任何
@toString
方法。它使用从
对象
类继承的方法:

/**
 * Returns a string representation of the object. In general, the
 * {@code toString} method returns a string that
 * "textually represents" this object. The result should
 * be a concise but informative representation that is easy for a
 * person to read.
 * It is recommended that all subclasses override this method.
 * ...
 * @return  a string representation of the object.
 */
public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
从上面的代码中,您可以看到默认数组将打印为类名+
@
+哈希代码

如果您尝试获取数组的类名,您将看到
[I

System.out.println(a.getClass().getName());
toString()
的实现完全对应的内容

要精确打印阵列,请使用:

Arrays.toString(list);
例如:

public static void main(String[] args) {
    int[] a = {1, 2, 3};
    System.out.println(a.getClass().getName());
    System.out.println(a);
    System.out.println(Arrays.toString(a));
}
输出:

[I
[I@56cbfb61
[1, 2, 3]
此外,在直线上有一个无限循环

while (stArray.length != iArrayLength)

如果输入这段代码,程序将永远不会结束。

您遇到了什么问题?我只看到分配的描述。我在@Add a sample input with expected output之后得到了一个带有几个数字的I@错误-这非常不清楚。Add sample input+expected output,确实不清楚问题出在哪里。
(stArray.length!=iArrayLength)
这里是无限循环吗?