我在将存储的数据从数组写入文本文件时遇到了一些问题。我已经设法在文件中获取了某种数据,但我在理解它的真正含义时遇到了问题(它是否正确?)。问题是,该文件大约为 4Mb,当我尝试打开它时 - 它没有打开,因为计算机只是试图加载它。所以我然后在终端中使用“cat gedit 文件名”命令(是的,我使用 linux),我看到很多正方形,每个正方形中的数字被打印出来,几乎看起来像位,因为我看到很多零和一。但我也很清楚我的数组包含很多零和一,这使得很难看出它是否甚至是数组的内容。请参阅下面的代码。
但是,关于文件中的其他代码正在解决 Project Euler 的问题,但是我自己将使用这些数据来做其他事情,所以我想将它全部存储在一个数组中,然后将其保存到一个单独的文件中。解决问题很好,效果很好,但是 - 我的“写入文件”(参见方法“写入”)不起作用 - 或者它确实有效,但我无法理解文件的内容。
该文件应该包含许多零和一,一些更高(数组中的最大值是 71),并且该数组是一个大小为 2000x2000 的方阵。我已经尝试单独打印出数组的内容以进行调试,看看它到目前为止是否有效 - 它确实有效。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class Euler27_MATLAB {
public static boolean isPrime(int n){
if(n<2 || (n>2 && n%2==0)){
return false;
}else if(n==2){
return true;
}else{
for(int i=3; i<=Math.sqrt(n); i=i+2){
if(n%i==0){
return false;
}
}
return true;
}
}
//THIS IS WHERE I NEED HELP
public static void write (String filename, int[][]x) throws IOException{
BufferedWriter outputWriter = null;
outputWriter = new BufferedWriter(new FileWriter(filename));
for (int i = 0; i < x.length; i++) {
for(int j=0; j<x.length; j++){ //array is square
outputWriter.write((x[i][j]));
}
outputWriter.newLine();
}
outputWriter.flush();
//outputWriter.close();
}
public static void main(String[] args){
int tmp=0; int A = 0; int B = 0; int limit = 1000;
int nbr = 0;
int [][]array = new int[limit*2+1][limit*2+1];
long start = System.currentTimeMillis();
for(int a=-limit; a<=limit; a++){ //2 if only odd nbrs
for(int b=-limit; b<=limit; b++){
while(isPrime(nbr*nbr+a*nbr+b)){ //n^2+an+b
nbr++;
}
array[a+limit][b+limit]=nbr;
if(nbr>tmp){ //store the values for later out-print
tmp = nbr; A=a; B=b;
}
nbr=0;
}
}
long time = System.currentTimeMillis() - start;
System.out.println("The product a*b is: " + A*B + "\nwith a=" + A +
" and b=" + B + " with limit " + limit +".");
System.out.println("Formula generated " + tmp + " primes.");
System.out.println("Time: " + time + " ms.");
//FOR THE ARRAY ----------------------------------------------
try{
write("/home/robin/workspace/ProjectEuler/src/pe27",array);
}catch(E`enter code here`xception e){
System.out.println("Failure");
}
}
}
我尝试了我在谷歌上找到的代码,但也无法让它们工作。
吉尔