使用“^z”作为结束 CreateTextFile 应用程序的指示符时出现错误

问题描述 投票:0回答:1

我正在学习如何使用 Java 创建文本文件并存储它。但是,我收到错误“输入无效。请重试。”输入“^z”文件结束指示符时。 我的代码如下:

import java.io.FileNotFoundException;
import java.util.Formatter;
import java.lang.SecurityException;
import java.util.FormatterClosedException;
import java.util.NoSuchElementException;
import java.util.Scanner;

public class CreateTextFile {

    public static void main(String[] args) {
        // open clients.txt,output data to the file the close clients.txt
        try (Formatter output = new Formatter("clients.txt")){
            Scanner input = new Scanner(System.in);
            
            System.out.printf("%s%n%s%n?", 
                    "Enter account number, first name, last name and balance.",
                    "Enter end-of-file indicator to end input.");
            while(input.hasNext()) {
                //loop until end-of-file indicator
                try {//output new record to file; assume valid input
                    output.format("%d %s %s %.2f%n", input.nextInt(),input.next(),input.next(),input.nextDouble());
                }
                catch(NoSuchElementException elementException) {
                    System.err.println("Invalid input. Please try again.");
                    input.nextLine();// discard input so user can try again
                }
                System.out.print("? ");
            }
            
        }
        catch(SecurityException | FileNotFoundException | FormatterClosedException e) {
            e.printStackTrace();
        }

    }

}

? 100 鲍勃·蓝 24.98 ? 200 史蒂夫·格林 -345.67 ? 300 帕姆·怀特 0.00 ? 400萨姆红-42.16 ? 500苏黄224.62 ? ^Z

这些是我的意见。

java file directory createfile
1个回答
0
投票

欢迎来到堆栈溢出。

一般来说,Ctrl-z 不是文件结束符。事实上,ASCII 字符集没有定义 EOF 字符。有一个 Ctrl-d 字符、EOT 或传输结束,这通常是最好的选择,因为大多数“终端”应用程序通过关闭任何外部连接并关闭和退出来响应它。

但是,根据输入关闭连接的决定完全取决于应用程序。

如果你用 ctrl-d 替换 ctrl-z,你的程序就可以正常工作,假设有一个类似 UNIX 的终端,例如重击。

© www.soinside.com 2019 - 2024. All rights reserved.