我一直试图将我的代码打印到记事本上几个小时。基本上我创建一个文件并在其中放入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();
}
}
}
答案 0 :(得分:2)
这里有一些错误。
首先,你几乎肯定希望数字在不同的行上而不是连接在一起:
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;
。
答案 1 :(得分:1)
output.print(x)只打印一个int-string。下一个 output.print(x)将int-string连接到前面的字符串。最后,您的文件包含一个非常长的字符串。
当 while(input.hasNext())循环启动时,它只找到1项,输入没有“下一步”。我认为要解决您的问题,您应该使用空格或NL(使用println(int))分隔值,以便您的扫描仪可以识别“hasNext()”。