gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:22:49 25 4
gpt4 key购买 nike

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

例如,如果用户输入 3 作为初始输入,则应将数组 length 设置为 [3]。第二个输入1 2 3

将返回为

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 中默认打印 Object 的方式。

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

/**
* 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)

如果进入该代码块,程序将永远不会结束。

关于Java inputstreamreader 解析为 int 然后反转数组并打印为格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54200401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com