代码:
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 。
我在每个input.next()
下尝试了nextLine()
,因为如果不这样做,请不要让我填写日期字段。
如果每个条目仅使用nextLine()
,就会发生这种情况
答案 0 :(得分:1)
我建议您阅读JavaDoc,这对使用方法很有帮助。正如上面nextLine()
方法所写:
此方法返回当前行的其余部分,不包括任何行 末尾的分隔符。该位置设置为下一个开始 线。
这意味着通过使用next()
方法,您正在读取输入的第一部分,然后在使用nextLine()
时,它将捕获其余行,即 13:45 输入样本中的strong>。
因此您不需要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
}