[英]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.