Java中nextInt和nextLine同时使用出现的问题

Posted yunn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中nextInt和nextLine同时使用出现的问题相关的知识,希望对你有一定的参考价值。

代码:

package com.ins1;

import java.util.*;
public class test {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int n=input.nextInt();
        String[] str = new String[n];
        for(int i=0;i<n;i++){
            str[i]=input.nextLine();
        }
        for (int i=0;i<str.length;i++) {
            System.out.println(str[i]);
        }
    }
}

运行:

技术图片

 

 问题:输入n的值为5,但是只能输入4个字符串!

原因:nextInt()只读取数值,剩下" "还没有读取 , nextLine()会读取" ",并结束。

  输入5的时候,nextInt()只读取了5,未读取后面的" ",这导致5后面的" "被nextLine()读取,所以就只能输入4个字符串了。

解决办法:在nextInt()之后额外加上input.nextLine();

解决之后:

package com.ins1;

import java.util.*;
public class test {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int n=input.nextInt();
        input.nextLine(); //消除n后面的 "
"
        String[] str = new String[n];
        for(int i=0;i<n;i++){
            str[i]=input.nextLine();
        }
        for (int i=0;i<str.length;i++) {
            System.out.println(str[i]);
        }
    }
}

 

技术图片

 

以上是关于Java中nextInt和nextLine同时使用出现的问题的主要内容,如果未能解决你的问题,请参考以下文章

JavaScanner类nextInt后使用nextLine无法读取输入

Java中nextLine()与其他next(),nextInt(),nextFloat()的区别

Java中Scanner类在nextInt()后无法输入nextLine()的问题

nextInt和nextLine以及next方法的区别

我在Scanner.nextInt()之后输入一个Scanner.nextLine()来使用新行,但它不能正常工作[重复]

第二次上课坑点(有关Scanner in中的nextLine(),,next,,以及nextInt()使用注意)