为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小怪兽爱吃肉 2022-06-30 11:22:08
我需要将一堆字符串打印到文件中,但我似乎犯了一些错误。没有错误消息,如果我将正常的打印语句放在 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();    }}
查看完整描述

3 回答

?
偶然的你

TA贡献1841条经验 获得超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 works

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


}

}


查看完整回答
反对 回复 2022-06-30
?
互换的青春

TA贡献1797条经验 获得超6个赞

问题是您正在读取文件名的文本,而不是文件本身,以使用 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();

}


查看完整回答
反对 回复 2022-06-30
?
浮云间

TA贡献1829条经验 获得超4个赞

我看不到flush()/close()在任何地方被调用(在 if 块之外)。

需要在 PrintStream 对象上调用 flush()/close() 以实际执行对底层输出 Stream(在您的情况下为文件)的写入。


查看完整回答
反对 回复 2022-06-30
  • 3 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信