猿问

Java:我无法在 while 循环中打印到文本文件,尽管能够在 while 循环之前这样做

我需要将一堆字符串打印到文件中,但我似乎犯了一些错误。没有错误消息,如果我将正常的打印语句放在 while 循环中;它打印那些。它只是不将其打印到文件中。程序的不同部分读取另一个文件,并给该程序一行以写入文件。


代码:


public static void writeToFile (String a, String username) throws FileNotFoundException {


    Scanner lineScan = new Scanner (a);

    String name = lineScan.next();


    PrintStream newFile = new PrintStream (new File (username+".txt"));  

    //The below newFile command works

    newFile.println(username);        

    if ((username.toUpperCase()).equals(name.toUpperCase()))

    {       

        int count = 0;


        while (lineScan.hasNextInt())

        {       

                int pop = lineScan.nextInt();

                String s1 = 1920 + (10*count) + ": " + pop;

                newFile.println(s1);


                count++;

        }

        newFile.close();


    }

}


小怪兽爱吃肉
浏览 166回答 3
3回答

偶然的你

你可以试试这个:public static void writeToFile (String a, String username) throws FileNotFoundException {Scanner lineScan = new Scanner (a);String name = lineScan.next();PrintStream newFile = new PrintStream (new File (username+".txt"));  //The below newFile command worksnewFile.println(username);        if ((username.toUpperCase()).equals(name.toUpperCase())){           int count = 0;    System.setOut(newFile);    while (lineScan.hasNextLine())    {                   String pop = lineScan.nextLine();            String s1 = 1920 + (10*count) + ": " + pop;            System.out.println(s1);            count++;    }    newFile.close();}}

互换的青春

问题是您正在读取文件名的文本,而不是文件本身,以使用 Scanner 类读取文件,您可以像在 PrintStream 中那样使用文件对象。固定代码:    public static void writeToFile (String a, String username) throws FileNotFoundException {    Scanner lineScan = new Scanner (new File(a));    String name = lineScan.next();    PrintStream newFile = new PrintStream (new File (username+".txt"));    //The below newFile command works    newFile.println(username);    if ((username.toUpperCase()).equals(name.toUpperCase()))    {        int count = 0;        while (lineScan.hasNextInt())        {            int pop = lineScan.nextInt();            String s1 = 1920 + (10*count) + ": " + pop;            newFile.println(s1);            count++;        }    }     newFile.close();     lineScan.close();}

浮云间

我看不到flush()/close()在任何地方被调用(在 if 块之外)。需要在 PrintStream 对象上调用 flush()/close() 以实际执行对底层输出 Stream(在您的情况下为文件)的写入。
随时随地看视频慕课网APP

相关分类

Java
我要回答