When I run the following program, I get the error:
Exception in thread "main" java.lang.NumberFormatException: For input string: "[-52.06907251530153, -90.45811476077165]"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at code.readFile(code.java:31)
at code.main(code.java:22)
What does this error mean? And why is this hapening?
import java.io.*;
import java.util.Arrays;
public class code
{
public static void main (String [] args) throws IOException
{
int points = 10000, dimension = 2, lengthA = 100;//int variables are declared and initialized
PrintWriter fileOut = new PrintWriter (new FileWriter ("arrayPoints.txt"));
double length [] = new double [dimension];//array for length is declared
double coordinate [][] = new double [points][dimension];//coordinate array is declared
writeTofile(length, coordinate, points, dimension, lengthA);//calls writeTofile method
for (int i = 0; i < points; i++){
fileOut.println(Arrays.toString(coordinate[i]));//converts array to string and prints to file
}//end for
fileOut.close();//writes to file
readFile();// calls readFile method
}//end main method
public static void readFile() throws IOException
{
BufferedReader readFile = new BufferedReader (new FileReader ("arrayPoints.txt"));
int readTimes [] = new int [10000];
for(int i = 0; i < 10000; i++){
readTimes [i] = Integer.parseInt(readFile.readLine());
System.out.print(readTimes [i]);
}//end for
}
public static void writeTofile (double length[], double coordinate[][], int points, int dimension, int lengthA)
{
for(int z = 0; z < dimension; z++){//fills the length array with the the set value of lengthA
length[z] = lengthA;
}//end for
for(int x = 0; x < points; x++){//runs 1000 times to print 1000 data points
for (int y = 0; y < dimension; y++){//runs 2 times to print an x and y coordinate
coordinate [x][y]= (2 *Math.random() - 1) * length[y];// finds a random number in the range and assiigns it to the coordinate array
}//end for
}//end for
}//writeTofile method
}//code
You're reading a bunch of lines from a file, assuming they are integers and running Integer.parseInt
on them. It fails because not all these lines contain integers.
Instead of reading each line and parsing it as an integer, you might want to try to split up each line using string.split()
and string.substring()
before using Double.parseDouble
on those non-integer parts.