Java矩阵不';t打印最后一行
实际产量:Java矩阵不';t打印最后一行,java,for-loop,matrix,Java,For Loop,Matrix,实际产量: 2 2 -= =- 预期产出: -= 你需要改变 -= =- 到 主要问题是nextInt(),或除nextLine()以外的其他nextXXX()方法不使用行分隔符,这意味着当您输入2(并按enter键)时,实际输入看起来像2\n或2\r\n或2\r,具体取决于操作系统 所以使用nextInt只能读取值2,但扫描仪的光标将设置在行分隔符之前,如 sc.nextLine(); for (int row = 0; nrows > row; row++) {
2
2
-=
=-
预期产出:
-=
你需要改变
-=
=-
到
主要问题是nextInt()
,或除nextLine()
以外的其他nextXXX()
方法不使用行分隔符,这意味着当您输入2
(并按enter键)时,实际输入看起来像2\n
或2\r\n
或2\r
,具体取决于操作系统
所以使用nextInt
只能读取值2
,但扫描仪的光标将设置在行分隔符之前,如
sc.nextLine();
for (int row = 0; nrows > row; row++) {
matrix[row] = sc.nextLine().toCharArray();
}
这将使nextLine()
返回空字符串,因为光标和下一行分隔符之间没有字符
因此,要真正读取nextInt
之后的行(而不是空字符串),您需要添加另一个nextLine()
以在这些行分隔符之后设置光标
2|\r\n
^-----cursor
顺便说一句,为了避免这个问题,您可以使用
2\r\n|
^-----cursor - nextLine() will return characters from here
till next line separators or end of stream
您可以发布输入、实际输出和预期输出,而不是
int i=nextInt()?可能是您在第一个for
循环中没有正确填充变量。是否确定此代码矩阵[row]=sc.nextLine().tocharray()你想要什么?你想在这里实现什么?@Pshemo yeap,我确信nextLine()不会使用换行符,你需要一个nextLine来实现这一点。
2|\r\n
^-----cursor
2\r\n|
^-----cursor - nextLine() will return characters from here
till next line separators or end of stream
int i = Integer.parseInt(sc.nextLine());