在2d数组上输入字符串

时间:2016-06-17 12:08:33

标签: java eclipse java.util.scanner

我想输入这个结构,但输入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)

如何修复它以及如何将字符串输入数组

3 个答案:

答案 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进入 - 输入 - 输入

之后会开始打印。如果那就是你想要的,那就好!否则,请告诉我们您正在尝试解决的问题的更多信息