Java输入nextLine在另一个nextLine之后

时间:2018-12-08 01:07:44

标签: java input

代码:

public void addTest(int idUser) throws IOException {

    String date = null;
    String tec = null;

    System.out.println("Enter name for test file :");
    String file = input.next(); //Name of file

    System.out.println("Enter date formatted as dd/mm/yyyy hh:mm :");
    date = input.nextLine(); //String 2 parts
    input.next();

    System.out.println("Enter technician name :");
    tec = input.nextLine(); // String 2+ parts
    input.next();

    String path = "C:\\Test\\Sample\\" + file;
    String chain = readFile(path);

    ClinicalTest test = new ClinicalTest(chain, date, idUser, tec);
    System.out.println(test.getDate()+"\n" + test.getTec());

    createTest(test);
}

输入日期 2018年12月12日13:45 和技术名称 Mark Zus 时,尝试创建 test 失败。 sysout仅显示 13:45

enter image description here

我在每个input.next()下尝试了nextLine(),因为如果不这样做,请不要让我填写日期字段。

enter image description here

如果每个条目仅使用nextLine(),就会发生这种情况

1 个答案:

答案 0 :(得分:1)

我建议您阅读JavaDoc,这对使用方法很有帮助。正如上面nextLine()方法所写:

  

此方法返回当前行的其余部分,不包括任何行   末尾的分隔符。该位置设置为下一个开始   线。

这意味着通过使用next()方法,您正在读取输入的第一部分,然后在使用nextLine()时,它将捕获其余行,即 13:45

因此您不需要input.next()。以下代码可以完美运行:

public static void main(String[] args){
    Scanner input = new Scanner(System.in);

    String date = null;
    String tec = null;

    System.out.println("Enter name for test file :");
    String file = input.nextLine();

    System.out.println("Enter date formatted as dd/mm/yyyy hh:mm :");
    date = input.nextLine(); //String 2 parts

    System.out.println("Enter technician name :");
    tec = input.nextLine(); // String 2+ parts
}