【问题标题】:creates the file doesnt write java [duplicate]创建文件不写java [重复]
【发布时间】:2023-11-03 00:54:01
【问题描述】:
public static void main(String[] args) throws FileNotFoundException {

        @SuppressWarnings("unused")
        Scanner in = new Scanner(System.in);
        System.out.println("enter filename");
        Filename=in.next();
        PrintWriter outputFile  =new PrintWriter(Filename);
        outputFile.println();
        outputFile.close();
        getInput();
        display();

    }

    public static void display() throws FileNotFoundException{
        for (int i = 0; i < genders.length; i++) {
            System.out.println(ages[i]+";"+genders[i]+";"+emails[i]+";"+salaries[i]);
    }}


    public static void getInput(){

        System.out.print("How many users do you wish to enter: ");
        int num = in.nextInt();
        ages= new int[num];
        genders = new String[num];
        emails = new String[num];
        salaries = new double[num];

        for (int i = 0; i < num; i++) {
            System.out.print("Please enter your age for person "+(i+1)+": ");
            ages[i] = in.nextInt();
            while (ages[i]<20 ||ages[i]>30){
                System.out.println("invalid age please re enter again");
                ages[i] = in.nextInt();}
            in.nextLine();

大家好,我正在尝试将用户输入的内容写入文件。我的问题是它创建文件但不写入文件。我尝试了各种方法,但没有任何帮助?

【问题讨论】:

标签: java file-io writefile


【解决方案1】:
    Filename=in.next();
    PrintWriter outputFile  =new PrintWriter(Filename);
    outputFile.println();

我认为您正在使用用户输入的名称创建文件,并在其中打印一个空行

【讨论】:

    【解决方案2】:

    您的问题在这里得到解答: https://*.com/questions/18070629/how-to-read-from-users-input-in-jav‌​a-and-write-it-to-a-file

    但总结一下:您只是在创建一个以用户输入命名的文件。您需要将该信息实际写入文件:

    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class MainClass {
        private static String   fileName;
        private static String[] genders, emails;
        private static double salaries[];
        private static int    userCount;
        private static int[]  ages;
        private static Scanner in = new Scanner(System.in);
    
        public static void main(String[] args) throws FileNotFoundException {
    
            System.out.println("enter filename");
            fileName = in.nextLine();
            File myFile = new File(fileName);
            getInput();
            display();
            FileWriter fWriter = null;
            BufferedWriter writer = null;
            try {
                fWriter = new FileWriter(myFile);
                writer = new BufferedWriter(fWriter);
                writer.write(display().toString());
                writer.newLine();
                writer.close();
            } catch (Exception e) {
                System.out.println("Error!");
            }
        }
    
        public static ArrayList<String> display() throws FileNotFoundException {
            ArrayList<String> data = new ArrayList<String>();
    
            for (int i = 0; i < genders.length; i++) {
    
                data.add(ages[i] + ";" + genders[i] + ";" + emails[i] +
                         ";" + salaries[i]);
            }
    
            for (int i = 0; i < genders.length; i++) {
    
                System.out.println(ages[i] + ";" + genders[i] + ";" + emails[i] +
                                   ";" + salaries[i]);
            }
            return data;
        }
    
        private static void getInput() {
            System.out.print("How many users do you wish to enter: ");
            int userCount = in.nextInt();
            ages = new int[userCount];
            genders = new String[userCount];
            emails = new String[userCount];
            salaries = new double[userCount];
    
            for (int i = 0; i < userCount; i++) {
                System.out.print("Please enter your age for person " + (i + 1) +
                                 ": ");
                ages[i] = in.nextInt();
                while (ages[i] < 20 || ages[i] > 30) {
                    System.out.println("invalid age please re enter again");
                    ages[i] = in.nextInt();
                }
                in.nextLine();
            }
        }
    }
    

    【讨论】:

    • 我试过这个它不起作用。它仍然没有向文本文件打印任何内容
    • @user3607224,经过编辑以包含完整的工作示例。此时您应该做的就是添加适当的部分以将性别、电子邮件和薪水发送到getInput()