2D数组,输出不在接近正确的位置
import java.util.Scanner; public class Maze { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int rows = 0; int cols = 0; String arrayLine = ""; int counter = 0; rows = sc.nextInt(); cols = sc.nextInt(); arrayLine = sc.next(); char[][] array = new char[rows][cols]; for(int r=0; r<rows; r++){ for (int c=0; c<cols; c++){ array[r][c] = arrayLine.charAt(counter); counter ++; } } System.out.println(array); System.out.println(); } }
我带来的信息是:
8 7 000000011111S0000000110101111010101100010110111011010E00
我运行它时得到的输出是[[C@252f0999
请帮助,我刚刚开始学习java!
array
是一种特殊的对象,它没有一个隐式的toString()
来管理数组内容的漂亮打印,所发生的是该对象由作为其哈希码的对象的标准表示来表示。
你应该使用Arrays.toString()
:
for (int i = 0; i < array.length; ++i) System.out.println(Arrays.toString(array[i]));
请注意,您无法直接编写Arrays.toString(array)
因为如文档中所述:
如果数组包含其他数组作为元素,则它们将从Objectinheritance的Object.toString()方法转换为字符串,该方法描述其身份而不是其内容。
当您在对象上调用println()时,Java会默认返回资源的位置(这就是C @ 252 ….)。 你想打电话
System.out.println(Arrays.deepToString(array)
显示数组中的数据。