【发布时间】:2016-03-08 23:45:11
【问题描述】:
程序是这样工作的 -
- 创建文件写入器和扫描器。
- 创建一个循环(循环 3 次)。
- 询问一些问题以从用户那里收集数据。
- 将所有收集的数据写入空白文本文件并循环。
我的问题是,在第一个循环之后,程序会问两个问题而不是一个一个问题,并且不允许您回答其中一个问题。
这是我的代码 -
package Week19;
import java.util.Scanner;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.PrintWriter;
public class CreatingFiles {
public static void main(String[] args) throws Exception {
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("textfile.txt")));
Scanner scanner = new Scanner (System.in);
for(int i=0; i < 3; i++){
System.out.println("Please enter a name please");
String employeeName = scanner.nextLine();
System.out.println("Please enter a job title");
String employeeJobTitle = scanner.nextLine();
System.out.println("Please enter a age");
while(!scanner.hasNextInt()) {
scanner.next();
}
int employeeAge = scanner.nextInt();
System.out.println("Please enter a salary");
while(!scanner.hasNextDouble()) {
scanner.next();
}
Double employeeSalary = scanner.nextDouble();
writer.println("Employee Name: "+ employeeName);
writer.println("Employee Job Title: "+ employeeJobTitle);
writer.println("Employee Age: "+ employeeAge);
writer.println("Employee Salary: "+ employeeSalary);
}
writer.close();
scanner.close();
}
}
错误:
【问题讨论】:
-
我认为您可能需要在
scanner.nextDouble()之后添加scanner.nextLine()。我认为Scanner还没有读到一个换行符,它一碰到第一个问题就找到了。 -
@KenSlade 非常感谢。不知道为什么我坐在这里时没有想到这一点。
标签: java file validation loops