我刚刚开始学习这门语言,我在尝试从用户输入创建一个char类型的Matrix时遇到了问题。
例如,我想将此作为我的输入:
3 // this is an int n that will give me a square matrix[n][n]
.#.
###
.#.
对于这个例子,这就是我所拥有的:
//...
Scanner stdin = new Scanner(System.in);
int n = stdin.nextInt();
char[][] matrix = new char[n][n]
for(int i = 0; i < n; i++){
matrix = stdin.nextLine();
}
显然这是错的,我知道。我没有看到正确读取此输入的方法。 如果有人能帮助我,我会很感激。
ps:如果可能的话,保持简单,因为就像我说的那样,我刚开始学习java:)
答案 0 :(得分:1)
首先,您需要在阅读stdin.nextLine();
后添加n
以跳过新的换行符。
其次,这是你在循环中所需要的:
matrix[i] = stdin.nextLine().toCharArray();
这将读取下一行并将其转换为字符数组。
答案 1 :(得分:0)
这是带输出的问题的可运行版本
import javafx.application.Application;
import javafx.stage.Stage;
import java.util.Arrays;
import java.util.Scanner;
public class MainNoFXML extends Application {
@Override
public void start(Stage stage) {
System.out.println("Enter Matrix Size:");
Scanner stdin = new Scanner(System.in);
int n = stdin.nextInt();
char[][] matrix = new char[n][n];
stdin.nextLine();
for(int i = 0; i < n; i++) {
System.out.println("Enter "+n+" Number of Chars");
System.arraycopy(stdin.nextLine().toCharArray(), 0, matrix[i], 0, n);
}
System.out.println("\nYour Matrix:");
for(int i = 0; i < n; i++)
System.out.println(Arrays.toString(matrix[i]));
}
public static void main(String[] args) { launch(args); }
}
输出:
Enter Matrix Size:
3
Enter 3 Number of Chars
.#.
Enter 3 Number of Chars
###
Enter 3 Number of Chars
.#.
Your Matrix:
[., #, .]
[#, #, #]
[., #, .]
答案 2 :(得分:0)
首先,谢谢你的所有答案。 我给老师发了电子邮件,这是他给我的解决方案,如果有人想知道:
Scanner stdin = new Scanner(System.in);
int n = stdin.nextInt();
stdin.nextLine();
char[][] matrix = new char[n][n]
for(int i = 0; i < n; i++){
String line = stdin.nextLine();
for(int j = 0; i < n; j++){
matrix[i][j] = line.charAt(j);
}
}
答案 3 :(得分:-1)
参见代码示例:
public class MatInput {
public static void main(String[] args) {
int matX = 3;
int matY = 3;
String matrix [][]=new String[matX ][matY];
Scanner input = new Scanner(System.in);
System.out.println("enter the strings for the Matrix");
for(int row=0;row<matX;row++){
for(int col=0;col<matY;col++){
matrix[row][col]=input.nextLine();
}
System.out.println("");
}
for(int r=0;r<matrix.length; r++) {
for (int c=0; c<matrix [r].length; c++) {
System.out.print(matrix [r][c] + " ");
}
System.out.println("");
}
input.close();
}
}