【问题标题】:Writing to file and looping (Loop not performing correctly)写入文件并循环(循环未正确执行)
【发布时间】:2016-03-08 23:45:11
【问题描述】:

程序是这样工作的 -

  1. 创建文件写入器和扫描器。
  2. 创建一个循环(循环 3 次)。
  3. 询问一些问题以从用户那里收集数据。
  4. 将所有收集的数据写入空白文本文件并循环。

我的问题是,在第一个循环之后,程序会问两个问题而不是一个一个问题,并且不允许您回答其中一个问题。

这是我的代码 -

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


【解决方案1】:

总结一下答案:在scanner.nextDouble() 之后还有一个新行。通过调用scanner.nextLine() 摆脱它。代码如下:

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();
        scanner.nextLine();

        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();
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多