2013-09-23 7 views
0

Quand je lance mon programme, il écrit dans un fichier, mais il écrit que la première coordonnée:écrit dans un fichier java

[79.93768569366277, 0.0], 
    [0.0, 0.0], 
    [0.0, 0.0], 
    [0.0, 0.0], 
    [0.0, 0.0], 
    [0.0, 0.0], 
    [0.0, 0.0], 
    [0.0, 0.0], 
    [0.0, 0.0], 
    [0.0, 0.0], 
    [0.0, 0.0], 
    [0.0, 0.0], 

Les autres sont [0.0. 0.0] où il devrait y avoir d'autres nombres aléatoires générés par le programme.

Pourquoi est-ce? Le programme consiste à écrire les coordonnées générées par le programme dans un autre fichier. CODE:

import java.io.*; 
    import java.util.Arrays; 

    public class J4 
    { 
     public static void main (String [] args) throws IOException 
     { 
     int numpoints = 100, dimension = 2, length = 100;//numpoints is set to 100, dimension is set to 2, length is set to 100 

     //arrays are initializewd and declared 
     double [] lengthscale = new double [dimension]; 
     double [][] locations = new double [numpoints][dimension]; 

     PrintWriter fileOut = new PrintWriter (new FileWriter ("arrayNumPoints.txt")); 

     writefile(lengthscale, locations, dimension, numpoints, length); 


     for(int m=0; m <length; m++){//for loop 
      fileOut.println(Arrays.toString(locations[m]) + ", ");//writes to file 
     } 
     fileOut.close();//close file 

     }//end main 

     public static Double writefile(double lengthscale[], double locations[][], int dimension, int numpoints, int length)throws IOException 
     { 

     for (int a = 0; a < dimension; a++) {// for loop runs while a is less than dimension 
     lengthscale[a] = length;// stores array 
    }// end for loop 

     for (int x=0; x < numpoints; x++){//for loop runs while x is less than numpoints 
      for (int y=0; y < dimension; y++){//nested for loop runs while y is less than dimension 
      locations [x][y]= (2 * Math.random() - 1) * lengthscale[y];//creates the range and choses random point within 
       return locations[x][y]; 

      }//end nested for loop 
     }//end for loop 

     //if program doesnt run through loop.. alternative return statement (but 
     double b= 1;  
     return b; 
     }//end writefile methos 
    }//end cass 

Répondre

1

C'est là un débogueur aider.

Il vous montrerait que vous avez un retour à l'intérieur de votre boucle et vous revenez après le tout premier emplacement [x] [y] est défini. Supprimez la déclaration de retour car elle n'est pas nécessaire, et je vous suggère d'essayer votre débogueur car il est conçu pour vous aider à trouver des bogues.

+1

Les instructions 'return' dans' writeToFile() 'ne sont même pas nécessaires, car' locations' seront quand même remplies avec des données. –

+0

@peter Lawrey quand je déplace l'instruction return en dehors de la boucle while, j'obtiens une erreur disant que x et y ne peuvent pas être trouvés. Est-ce parce que x et y sont déclarés à l'intérieur des boucles alors que l'instruction return est à l'extérieur? – user101

+0

@ user101 Vous avez raison et musical_coder a également raison de ne pas en avoir besoin, alors retirez-le. –