繁体   English   中英

PrintWriter不写入java文件

[英]PrintWriter Not Writing to java file

我一直试图将我的代码打印到记事本上好几个小时。 基本上我创建一个文件并在其中放入10个随机整数。 然后我创建另一个文件,将第一个文件中的那10个随机整数乘以10.我已经尝试刷新,打开关闭等等。我假设我的代码中存在问题。 谢谢!

    import java.io.File;


    import java.util.Random;
    import java.io.PrintWriter;
public class UghFiles {

    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub

        Random rand = new Random();
        int x = 0;
        File file = new File("LearnProgram.txt");

        if(file.exists()) {

            System.out.println("File alrady exists");
            System.exit(0);
        }
        else {
            PrintWriter output = new PrintWriter(file);
            for(int i= 0; i<10; i++){
                x = 0 + rand.nextInt(99-0)+1;

                output.print(x);
                //System.out.print(x + " ");
                //System.out.print("");

            }
            output.close();
        }
        File f2 = new File("Multiply.txt");
        if(f2.exists()) {

            System.out.println("File already exists");
            System.exit(0);
        }
        else {
            java.util.Scanner input = new java.util.Scanner(file);
            PrintWriter output = new PrintWriter(file);

            while(input.hasNext()) {
                x = x*10;

                output.println("" + x);
                System.out.print(x);
            }
            output.close();
            input.close();
        }

    }   
}

这里有一些错误。

首先,您几乎肯定希望将数字放在不同的行上而不是连接在一起:

for(int i= 0; i<10; i++){
    x = 0 + rand.nextInt(99-0)+1;
    output.print(x);
    //System.out.print(x + " ");
    //System.out.print("");
}

...所以第三行应该读取output.println(x);

其次(和大的):

java.util.Scanner input = new java.util.Scanner(file);
PrintWriter output = new PrintWriter(file);

你忽略了刚刚创建的f2 ,几乎肯定想要写入。 (因此第二个参数应该是f2 。)这就是为什么你的文件是空的 - 它实际上是在上面的代码中写入的,只是在这一步被空数据覆盖!

第三:

while(input.hasNext()) {
    x = x*10;

你只是一次又一次地乘以相同的数字,而不是从你的扫描仪实际读取。 你几乎肯定想要说x = input.nextInt() * 10; 代替。

output.print(x)只是打印一个int-string。 下一个output.print(x)将int-string连接到前面的字符串。 最后,您的文件包含一个非常长的字符串。

while(input.hasNext())循环开始时,它只找到1个项目,输入没有“下一个”。 我认为要解决您的问题,您应该使用空格或NL(使用println(int))分隔值,以便您的扫描仪可以识别“hasNext()”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM