Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于环路合并线路_Java_Loops - Fatal编程技术网

Java 用于环路合并线路

Java 用于环路合并线路,java,loops,Java,Loops,我正在尝试编写一个for循环,允许用户输入五个姓名和年龄。我遇到的问题是,它第一次运行正确,但第二次运行时,名字和姓氏组合在一起,不允许两个字符串条目。它将允许一个然后移动到年龄的整数条目。感谢您的帮助 import java.util.Scanner; public class QueueImp extends people{ public static void main(String[] args) { String userL; String

我正在尝试编写一个for循环,允许用户输入五个姓名和年龄。我遇到的问题是,它第一次运行正确,但第二次运行时,名字和姓氏组合在一起,不允许两个字符串条目。它将允许一个然后移动到年龄的整数条目。感谢您的帮助

import java.util.Scanner;

public class QueueImp extends people{

    public static void main(String[] args) {
        String userL;
        String userF;
        int userA;
        int userchoice = 0;

        Scanner scnr = new Scanner(System.in);

        for(int i = 0; i<5; i++) {      
        System.out.print("Please enter last name: ");
        userL = scnr.nextLine();
        System.out.println("");
        System.out.println("Please enter first name: ");
        userF = scnr.nextLine();
        System.out.println("Please enter age: ");
        userA = scnr.nextInt();
        System.out.println("");
        pName(userL, userF, userA);
 }
import java.util.Scanner;
公共类QueueImp扩展了人{
公共静态void main(字符串[]args){
字符串userL;
字符串userF;
int userA;
int userchoice=0;
扫描仪scnr=新扫描仪(System.in);

对于(int i=0;i而言,原因是换行符(输入整数)尚未使用。因此,它被下一个循环迭代的
scnr.nextLine()
使用,因此跳过第二个姓氏输入。要使用换行符,请在扫描整数后再添加1个
scnr.nextLine()

for(int i = 0; i<5; i++) {      
    System.out.print("Please enter last name: ");
    userL = scnr.nextLine();
    System.out.println("");
    System.out.println("Please enter first name: ");
    userF = scnr.nextLine();
    System.out.println("Please enter age: ");
    userA = scnr.nextInt();
    System.out.println("");
    scnr.nextLine();
    pName(userL, userF, userA);
}

对于(int i=0;i请使用
next
代替
nextLine

System.out.print("Please enter last name: ");
userL = scnr.next();
next()
只能在空格前读取输入。它不能读取空格分隔的两个单词。此外,
next()
在读取输入后将光标放在同一行

@编辑:
nextLine()

要阅读整行内容,可以使用
nextLine()

供参考:

如果您想使用相同的than,请按
Integer.parseInt

userA = Integer.parseInt(scnr.nextInt());
使用
scnr.next()
将解决您的问题

为什么它不使用
scnr.nextLine()
,是因为next()只返回空格前的内容。nextLine()返回当前行后自动向下移动扫描仪。无法输入详细信息的第二次迭代的原因是指针在第二次迭代之前已向前移动

System.out.print("Please enter last name: ");
userL = scnr.next();
System.out.println("Please enter first name: ");
userF = scnr.next();
System.out.println("Please enter age: ");
userA = scnr.nextInt();
System.out.println(userL + " " + userF + " " + userA);

您需要使用
nextInt
留下的悬空新行,使用对象数组来实现此操作使用
next();
而不是
nextLine();
请解释原因。