首页 > 解决方案 > JAVA 中的 next() 与 nextLine()

问题描述

我试图从用户那里获取要存储在数组中的名称数量,然后使用它从用户那里获取名称,首先我尝试使用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()接受完整的输入,那么这里发生了什么?

标签: javaarraysstringjava.util.scannernext

解决方案


只是在 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字符串扫描器输入不等待信息,直接移动到下一条语句。如何等待信息?


推荐阅读