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()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());