1. 程式人生 > >nextline和nextInt連用問題

nextline和nextInt連用問題

https://blog.csdn.net/gg543012991/article/details/52900592

在nextInt(),next(),nextDouble(),nextFloat()方法與nextLine()連用並放在nextLine()前面時,就會出現如下錯誤:

 

            System.out.println("請輸入矩陣的行數:");

        int rows

 = scanner.nextInt();

        

        System.out.println("請輸入一個矩陣字串,不包含空格:");

        String tmp = scanner.nextLine();

        

        System.out.println("請輸入矩陣的列數:");

        int cols = scanner.nextInt();

 

        System.out.println("請輸入要查詢的字串:");

        String str

 = scanner.nextLine();

        scanner.close();  

 

 

  nextLine()並未讀取任何輸入,直接轉到了下一行。

    問題分析:

        nextLine()會把nextInt(),next(),nextDouble(),nextFloat()的結束換行符作為字串讀入,進而不需要從鍵盤輸入字串nextLine便已經轉向了下一條語句執行。

    解決辦法:

        在每一個nextInt(),next(),nextDouble(),nextFloat()後都加一個nextLine()語句,將被next()去掉的Enter過濾掉。

程式碼如下:

            System.out.println("請輸入矩陣的行數:");

        int rows = scanner.nextInt();

        scanner.nextLine();

 

        System.out.println("請輸入一個矩陣字串,不包含空格:");

        String tmp = scanner.nextLine();

        

        System.out.println("請輸入矩陣的列數:");

        int cols = scanner.nextInt();

        scanner.nextLine();

        

        System.out.println("請輸入要查詢的字串:");

        String str = scanner.nextLine();

        

        scanner.close();

        //SolutionMethod2 solution2 = new SolutionMethod2();

        System.out.println("矩陣中是否包含該字串:");  

 

    執行結果: