2017-01-08 141 views
0

我正在做一个矩阵求解java上的控制台软件。nextInt()同一行中的Java输入

我试图做的是,每个“”输入“键做一个空格而不是在其他创建一个行中打破等等。

当用户键入一个INT,然后按下“ENTER”它会中断,因此它打破了矩阵设计。

这是我到目前为止的代码:

Scanner scanner = new Scanner(System.in);//.useDelimiter("\\s+"); 

    for(int i = 0; i < matrix.length; i++) { 
     System.out.print("| "); 
     for(int j = 0; j < matrix[i].length; j++) { 
      matrix[i][j] = scanner.nextInt(); 
     } 
     System.out.print("|"); 
     System.out.println(""); 
    } 
    scanner.close(); 
    System.out.println("Done"); 

任何想法?

谢谢!

+0

'nextInt()'不消耗换行,这是什么问题。 – Natecat

+0

你不能改变回车键的行为,但为什么不等到用户输入整行 – Moira

回答

1

我不认为这有可能,所以我会建议另一种方式:

而是使用Enter和返回的行你为什么不写所有的值,并将它们与空格分隔或具体分隔符,所以当你完成按Enter键返回到下一行扫描下一行是这样的:

1 2 3 4 5 
5 6 7 8 9 

然后你就可以得到你的价值观是这样的:

String line = scan.nextLine(); 
String[] row = line.split(" "); 

然后使用String[]来获得您的int值?

这可以帮助你。

0

在控制台模式下,输入是enter:这是一个breakline。

解决你的问题,你可以做不同的事情:

  • 你把用户输入而不考虑有关格式化。
  • 每次输入后,您都会重新显示矩阵对象的实际结果。
    通过这种方式,您可以根据需要对其进行格式化,甚至可以在用户填写的下一个数字的位置显示特殊字符。

与您的实际代码可能看起来像:

Scanner scanner = new Scanner(System.in);//.useDelimiter("\\s+"); 

for(int i = 0; i < matrix.length; i++) { 
    for(int j = 0; j < matrix[i].length; j++) { 
     matrix[i][j] = scanner.nextInt(); 
     displayActualMatrix(matrix) 
    } 
} 
scanner.close(); 
System.out.println("Done"); 
... 

private void displayActualMatrix(int[][] matrix){ 
    for(int i = 0; i < matrix.length; i++) { 
     for(int j = 0; j < matrix[i].length; j++) { 
       // rendering the matrix 
      } 
     } 
    ... 
}