JAVA中的next()与nextLine()

时间:2018-10-14 11:56:24

标签: java arrays string java.util.scanner next

我试图从用户那里获取要存储在数组中的名称的数量的输入,然后使用它来从用户那里获取名称,首先我尝试使用next()方法来从用户那里获取名称一切都很好,但是当我尝试使用nextLine()方法接受输入时,输出如下所示

package learningJava;
import java.util.Scanner;

public class practice
{
    public static void main(String[] args)
    {
        int n;
        Scanner obj = new Scanner(System.in);
        System.out.println("Enter the number of names you are gonna enter");
        n = obj.nextInt();

        String names[] = new String[n];
        for(int i=0;i<n;i++)
        {
            System.out.println("Enter the name of friend "+(i+1));
            names[i]=obj.nextLine();
        }
        obj.close();
        System.out.println("Names of your friends are");
        for(int i=0;i<names.length;i++)
        {
            System.out.println(names[i]);
        }
    }
}

nextLine()方法的输出

Enter the number of names you are gonna enter
5
Enter the name of friend 1
Enter the name of friend 2

这不是在提示我输入朋友1的名称并直接跳过它而进入朋友2行。 我是Java的初学者,我知道next和nextLine()的基本区别是next()在空格后不接受输入,但是nextLine()接受完整的输入,所以这里发生了什么?

1 个答案:

答案 0 :(得分:0)

在for循环中,只需将“ println”更改为“ print”,因为nextLine()会占用换行符。

import java.util.Scanner;

public class practice
{
    public static void main(String[] args)
    {
        int n;
        Scanner obj = new Scanner(System.in);
        System.out.println("Enter the number of names you are gonna enter");
        n = obj.nextInt();

        String names[] = new String[n];
        for(int i=0;i<n;i++)
        {
            System.out.print("Enter the name of friend "+(i+1));
            names[i]=obj.nextLine();
        }
        obj.close();
        System.out.println("Names of your friends are");
        for(int i=0;i<names.length;i++)
        {
            System.out.println(names[i]);
        }
    }
}

检查此答案:Java String Scanner input does not wait for info, moves directly to next statement. How to wait for info?