我一直在尝试将我的代码打印到记事本上已有几个小时.基本上,我创建了一个文件,并在其中放置了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;代替.