输入来自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());
}
}
答案 0 :(得分:1)
这些消息不是错误,这是默认情况下在Java中打印Object
的方式。
array
是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)
如果输入此代码块,程序将永远不会结束。