我正在试图找出为什么我的代码没有输出硬币更改排列列表作为int数组列表。它输出一些十六进制值(或者I@64578ceb
是什么)。
有什么想法吗?
拨打:
System.out.println("Permutations List: " + dan.makeChange(27));
代码:
public class Person {
int[] denominations, coinValues;
List<int[]> resultsList;
public Person() {
denominations = new int[]{25, 10, 5, 1};
resultsList = new ArrayList<int[]>();
}
public List<int[]> makeChange(int change) {
return resultsList= changeMaker(change, new int[] {0,0,0,0});
}
public List<int[]> changeMaker(int change, int[] toAdd) {
if (change == 0) {
resultsList.add(toAdd);
return resultsList;
}
for (int i = 0; i < denominations.length; i++) {
if (change >= denominations[i]) {
int[] temp = toAdd;
temp[i]++;
resultsList = changeMaker(change-denominations[i], temp);
}
}
return resultsList;
}
输出:
Permutations List: [[I@64578ceb, [I@64578ceb, [I@64578ceb, [I@64578ceb, [I@64578ceb, [I@64578ceb, etc...
答案 0 :(得分:4)
int[]
没有漂亮的toString()
来显示数字,您需要编写自己的方法来接受int[]
并以您想要的任何格式打印
答案 1 :(得分:1)
System.out.println方法不知道如何打印任何类型的数组。
如果要显示int数组,请构建一个带有int []和返回字符串的函数,然后在打印时用该函数包装List的每个条目。
答案 2 :(得分:0)
这就是用Java打印数组的方式。您需要使用Arrays.toString()
循环并“漂亮地”打印数组:
List<String> printable = new ArrayList<> ();
for (int[] array : list) {
printable.add(Arrays.toString(array));
}
System.out.println(printable);
答案 3 :(得分:0)
[I@64578ceb
是int[]
的印刷表示。您的排列列表是int[]
的列表,因此您看到列表中包含[
和]
的元素以及元素,每个元素看起来像{{1} }}。对于非常快速和肮脏的解决方案,您可以使用[I@64578ceb
方法和List.toArray
来获取数组列表的字符串表示。
答案 4 :(得分:0)
要打印数组的内容,请遍历数组中的每个元素:
int[] array = new int[10];
for(int s : array) System.out.println(s);
// or
for(int i = 0; i < array.length; i++) System.out.println(array[i]);
int[] array = new int[10];
System.out.println(Arrays.toString(array));
将打印如下内容:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
输出一些十六进制值(或者我@ 64578ceb的任何值)。
让我解释一下这个简单的例子:
int[] array = new int[10];
System.out.println(array);
array
是一个对象,因此您正在调用println(Object)
PrintStream
Object的toString()
,它在内部调用传递的对象上的System.out
。数组的toString()
类似于hashCode()
&#39; s Class.getName()
JavaDoc:
toString()
所以输出结果如下:
getClass().getName() + "@" + Integer.toHexString(hashCode());
其中[I@756a7c99
代表数组的深度,[
代表I
。 int
是从{{3}}返回的十六进制数值。
另请阅读{{3}}。