我想输入这个结构,但输入3 -
并按Enter键后出现错误
输入:
---
-m-
p--
我的代码是: `
import java.util.Scanner;
public class Test {
public static void main(String[]args){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String[][] matrix = new String[n][n];
for ( int i=0 ; i<n ; i++){
for ( int j=0 ; j<n ; j++){
matrix[i][j] = in.nextLine();
}
}
for ( int i=0 ; i<n ; i++){
for ( int j=0 ; j<n ; j++){
System.out.println(matrix[i][j]);
}
System.out.println();
}
}
}
我得到的错误是:
线程“main”java.util.InputMismatchException中的异常 在java.util.Scanner.throwFor(未知来源) 在java.util.Scanner.next(未知来源) 在java.util.Scanner.nextInt(未知来源) 在java.util.Scanner.nextInt(未知来源) 在Test.main(Test.java:6)
如何修复它以及如何将字符串输入数组
答案 0 :(得分:0)
int n = in.nextInt();
在此行中,您输入的是字符串输入,而不是输入整数n的值。首先,您应该输入n的整数输入。 (在这种情况下是3)
答案 1 :(得分:0)
在int n = in.nextInt()之后你有异常,不是吗? 另请注意,在您第一次调用in.nextLine()之后,您将没有任何值。
试试这段代码:
public static void main(String[]args){
Scanner in = new Scanner(System.in);
String s = in.nextLine();
int n = Integer.parseInt(s);
String[][] matrix = new String[n][n];
for ( int i=0 ; i<n ; i++){
for ( int j=0 ; j<n ; j++){
matrix[i][j] = in.nextLine();
}
}
for ( int i=0 ; i<n ; i++){
for ( int j=0 ; j<n ; j++){
System.out.println(matrix[i][j]);
}
System.out.println();
}
}
}
答案 2 :(得分:0)
我认为您的问题在于使用:int n = in.nextInt()
。拨打此电话后,您应该在再次使用扫描仪之前使用下一行,方法是调用
//consume nextLine()
in.nextLine();
你必须这样做的原因是因为像nextInt(),next()等函数不会消耗&#39; \ n&#39;您输入的字符,因此当您在输入输入后按Enter键时,该功能会在此之前执行所有操作并离开&#39; \ n&#39;挂在那里。希望能为你解决它!
另外:nextline()逐行读取;如果您输入的输入就像您在问题中描述的那样:
--- '\n'
-m- '\n'
p-- '\n'
该计划无法运作。该计划期待9个输入,但你只给它3个。通过简单地添加以下行确保在获取整数后使用下一行:
//consume nextLine()
in.nextLine();
在行int n = in.nextInt()
之后。程序将期望以下列方式输入输入:
3进入 - 输入 - 输入 - 输入 - 输入 我进入 - 输入 p进入 - 输入 - 输入
之后会开始打印。如果那就是你想要的,那就好!否则,请告诉我们您正在尝试解决的问题的更多信息