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)
这里是无限循环吗?