PrintWriter未写入java文件

PrintWriter未写入java文件,java,Java,我已经试着把我的代码打印到记事本上好几个小时了。基本上我创建了一个文件,并在其中放入10个随机整数。然后我创建另一个文件,将第一个文件中的10个随机整数乘以10。我尝试过刷新、打开-关闭等。我假设我的代码中存在问题。谢谢 import java.io.File; import java.util.Random; import java.io.PrintWriter; public class UghFiles { public static void mai

我已经试着把我的代码打印到记事本上好几个小时了。基本上我创建了一个文件,并在其中放入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();
        }

    }   
}
导入java.io.File;
导入java.util.Random;
导入java.io.PrintWriter;
公共类文件{
公共静态void main(字符串[]args)引发异常{
//TODO自动生成的方法存根
Random rand=新的Random();
int x=0;
File File=新文件(“LearnProgram.txt”);
if(file.exists()){
System.out.println(“文件alrady存在”);
系统出口(0);
}
否则{
PrintWriter输出=新的PrintWriter(文件);
对于(inti=0;i这里有一些错误

首先,几乎可以肯定的是,您希望将数字应用到另一行,而不是连接在一起:

for(int i= 0; i<10; i++){
    x = 0 + rand.nextInt(99-0)+1;
    output.print(x);
    //System.out.print(x + " ");
    //System.out.print("");
}
您忽略了刚刚创建的
f2
,并且几乎肯定要写入该文件。(因此,第二个参数应该是
f2
)这就是为什么您的文件是空的-它实际上是在上面的代码中写入的,很好,只是在这一步被空数据覆盖了

第三:

while(input.hasNext()) {
    x = x*10;
你只是一次又一次地将同一个数字相乘,而不是实际从扫描仪中读取。你几乎可以肯定地希望它是
x=input.nextInt()*10;

output.print(x)只需打印一个int字符串。下一个output.print(x)将一个int字符串连接到前面的字符串。文件末尾包含一个非常长的字符串


while(input.hasNext())循环启动时,它只会找到一个项目,而输入没有“next”。我认为要解决您的问题,您应该用空白或NL(使用println(int))分隔这些值,以便您的扫描仪能够识别“hasNext()”

您所做的
PrintWriter输出=新的PrintWriter(文件)
两次,即
LearnProgram.txt
并且您的代码实际上应该写入该文件,它只是覆盖该文件
while(input.hasNext()) {
    x = x*10;