簡體   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