next() vs nextLine() in JAVA



我试图从用户那里输入要存储在数组中的名字数量,然后使用它我从用户那里取名,首先我尝试使用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的初学者,我知道接下来和nextLine()的基本区别,next()不接受空格后的输入,但nextLine()接受完整的输入,那么这里发生了什么?

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

最新更新