Results 1 to 7 of 7
Thread: Problem in file implementation
- 04-18-2008, 12:12 PM #1
Member
- Join Date
- Mar 2008
- Posts
- 32
- Rep Power
- 0
Problem in file implementation
Hi all
I need a bit of help here I have wore a program do take in a declared array as shown bellow but my problem is how to convert this program to read the numbers which I have in the array in the main from a file so it calculate them automatically and outputs them back into new file.
file looks like thisJava Code:import java.io.*; import static java.lang.Math.*; class numbers { public static void Manhattan(double[][] a,double[][] b,int n,int n2) { int q=n2; int c=n; for(int m=0;m<q;m++) { for(int h=0;h<q;h++) { double d=0; double d2=0; for(int j=0;j<c;j++) { d2=a[m][j]-a[h][j]; if(d2<0) d2=d2*-1; d=d+d2; } b[m][h]=d; } } } public static double Euclidean(double[] array1, double[] array2) { //Store the numbers of the both arrays double x1= array1[0]; double y1=array2[0]; double x2= array1[1]; double y2= array2[1]; double x3=array1[2]; double y3=array2[2]; //Compute the minus part of the formula double minusResult1 = y1-x1; double minusResult2 = y2-x2; double minusResult3 = y3-x3; //Square the answers double square1 = pow(minusResult1, 2); double square2 = pow(minusResult2, 2); double square3 = pow(minusResult3, 2); //Sum the squares double sumOfSquares = square1+square2+square3; //Get the square root of the sumOfSquares double finalResult = sqrt(sumOfSquares); return finalResult; } public static double Manhattan(double[] array1, double[] array2) { //Store the numbers of the both arrays double x1= array1[0]; double y1=array2[0]; double x2= array1[1]; double y2= array2[1]; double x3=array1[2]; double y3=array2[2]; //Compute the minus part of the formula double minusResult1 = y1-x1; double minusResult2 = y2-x2; double minusResult3 = y3-x3; //Square the answers double abs1 = abs(minusResult1 ); double abs2 = abs(minusResult2); double abs3 = abs(minusResult3 ); //Sum the squares double sumOfAbs = abs1+abs2+abs3; //Get the square root of the sumOfAbs double finalResult = sqrt(sumOfAbs); return finalResult; } public static double Pearson(double[] array1, double[] array2) { //Store the numbers of the both arrays double x1= array1[0]; double y1=array2[0]; double x2= array1[1]; double y2= array2[1]; double x3=array1[2]; double y3=array2[2]; //Compute the minus part of the formula double mean1 = (x1 + x2 + x3)/3; double mean2 = (y1 + y2 + y3)/3; double t = (x1 - mean1)*(y1 - mean2) + (x2 - mean1)*(y2 - mean2) + (x3 - mean1)*(y3 - mean2); //Square the answers double square1 = sqrt((x1 - mean1)*(x1 - mean1) + (x2 - mean1)*(x2 - mean1) + (x3 - mean1)*(x3 - mean1)); double square2 = sqrt((y1 - mean2)*(y1 - mean2) + (y2 - mean2)*(y2 - mean2) + (y3 - mean2)*(y3 - mean2)); //Get the square root of the sumOfSquares double finalResult = t/(square1*square2); return finalResult; } public static void main(String[] args) { double[] gene={-9.30, 5.65, -5.02}; double[] gene1={-4.10, 5.68, 0.56}; double EuclideanDist = Euclidean(gene, gene1); System.out.println("Euclidean distance = " + EuclideanDist); double ManhattanDist = Manhattan(gene, gene1); System.out.println("Manhattan = " + ManhattanDist); double PearsonDist = Pearson(gene, gene1); System.out.println("Pearson = " + PearsonDist); } }
If somebody know the way to do this please help.Java Code:-9.30 5.65 -5.02 -4.10 5.68 0.56 4.75 0.11 2.86 -1.54 -10.01 -1.99 -6.29 5.62 -2.78 -13.02 1.31 1.61 -5.85 3.79 -6.56 -12.71 -0.45 0.62 -3.05 -12.65 -5.07 2.18 -5.82 -9.73 1.74 -0.99 -3.66 -7.88 0.93 -8.33 -6.34 -1.85 -4.00 -0.71 -2.64 -5.64
Thank you.
- 04-18-2008, 12:16 PM #2
- Join Date
- Jul 2007
- Location
- Colombo, Sri Lanka
- Posts
- 11,374
- Blog Entries
- 1
- Rep Power
- 18
Read the file line by line and get substring from there. It's easy because there is a space between two number of each line. You got it?
- 04-18-2008, 12:33 PM #3
- Join Date
- Jul 2007
- Location
- Colombo, Sri Lanka
- Posts
- 11,374
- Blog Entries
- 1
- Rep Power
- 18
Is there two tab spaces between two values in a single line?
- 04-18-2008, 01:04 PM #4
Member
- Join Date
- Mar 2008
- Posts
- 32
- Rep Power
- 0
Thanks for taking interest, and to answer your question the space between columns is not important, what is important is that there are three columns.
- 04-18-2008, 01:56 PM #5
Member
- Join Date
- Mar 2008
- Posts
- 32
- Rep Power
- 0
I have added this so it reads the files one by one:
Get Set methods
Read file classJava Code:package get.set; // packaged for reuse public class experiment { private double experiment1; private double experiment2; private double experiment3; // no-argument constructor calls other constructor with default values public experiment() { this ( 0.0, 0.0, 0.0 ); // call four-argument constructor } // end no-argument AccountRecord constructor // initialize a record public experiment( double exp1, double exp2, double exp3 ) { setExperiment1( exp1 ); setExperiment2( exp2 ); setExperiment3( exp3 ); } // end three-argument experiment constructor // set experiment1 public void setExperiment1( double exp1 ) { experiment1 = exp1; } // end method setExperiment1 // get account number public double getExperiment1() { return experiment1; } // end method getExperiment1 // set experiment2 public void setExperiment2( double exp2 ) { experiment2 = exp2; } // end method setExperiment2 // get first name public double getExperiment2() { return experiment2; } // end method getExperiment2 // set set experiment3 public void setExperiment3( double exp3 ) { experiment3 = exp3; } // end method setExperiment3 // get experiment3 public double getExperiment3() { return experiment3; } // end method getExperiment3 } // end class experiment
Java Code:import java.io.File; import java.io.FileNotFoundException; import java.lang.IllegalStateException; import java.util.NoSuchElementException; import java.util.Scanner; import get.set.experiment; public class readFile { private Scanner input; // enable user to open file public void openFile() { try { input = new Scanner( new File("Data_Set_1.txt") ); } // end try catch ( FileNotFoundException fileNotFoundException ) { System.err.println( "Error opening file." ); System.exit( 1 ); } // end catch } // end method openFile // read record from file public void readRecords() { // object to be written to screen experiment record = new experiment(); System.out.printf( "%10s%15s%15s\n", "Experiment 1", " Experiment 2", " Experiment 3" ); try // read records from file using Scanner object { while ( input.hasNext() ) { record.setExperiment1( input.nextDouble() ); // read experiment1 record.setExperiment2( input.nextDouble() ); // read experiment2 record.setExperiment3( input.nextDouble() ); // read experiment3 // display record contents System.out.printf( "%10f%15f%15f\n", record.getExperiment1(), record.getExperiment2(),record.getExperiment3()); } // end while } // end try catch ( NoSuchElementException elementException ) { System.err.println( "File improperly formed." ); input.close(); System.exit( 1 ); } // end catch catch ( IllegalStateException stateException ) { System.err.println( "Error reading from file." ); System.exit( 1 ); } // end catch } // end method readRecords // close file and terminate application public void closeFile() { if ( input != null ) input.close(); // close file } // end method closeFile } // end class readFile
Test Class
Ok my next question is how to use algorithms from above to combine with these classes so they do waht they are suppose to do. Your help is greatly appreciatedJava Code:public class runReadFileTest { public static void main( String args[] ) { readFile application = new readFile(); application.openFile(); application.readRecords(); application.closeFile(); } // end main } // end class runReadFileTestLast edited by BHCluster; 04-18-2008 at 03:55 PM.
- 04-21-2008, 03:09 AM #6
- Join Date
- Jul 2007
- Location
- Colombo, Sri Lanka
- Posts
- 11,374
- Blog Entries
- 1
- Rep Power
- 18
- 04-21-2008, 03:21 AM #7
- Join Date
- Jul 2007
- Location
- Colombo, Sri Lanka
- Posts
- 11,374
- Blog Entries
- 1
- Rep Power
- 18
I'm not sure how and why you going to use algorithms for this. In simple way you can read the file and get the numbers of each columns. As i said earlier, space in between two numbers of a each line is important for my application. I assumed that the space is two tabs.
Java Code:FileInputStream fis = null; try { fis = new FileInputStream("files/ReadFileByLines.txt"); InputStreamReader isr = new InputStreamReader(fis); LineNumberReader lnr = new LineNumberReader(isr); String line = null; while((line = lnr.readLine()) != null){ StringTokenizer st1 = new StringTokenizer(line, "\t\t"); String s1 = st1.nextToken(); String s2 = st1.nextToken(); String s3 = st1.nextToken(); System.out.println(s1 + "\t" + s2 + "\t" + s3); } System.out.println("Total number of lines on the file " + "is " + lnr.getLineNumber()); } catch (IOException ex) { System.out.println(ex.getMessage()); } finally { try { fis.close(); } catch (IOException ex) { System.out.println(ex.getMessage()); } }
Similar Threads
-
Implementation of the Producer/Consumer problem in Java
By Java Tip in forum java.langReplies: 0Last Post: 04-09-2008, 06:41 PM -
[SOLVED] file i/o problem
By aytidaalkuhs in forum New To JavaReplies: 3Last Post: 04-06-2008, 06:42 PM -
problem with jar file pls help
By jinu5 in forum New To JavaReplies: 0Last Post: 08-15-2007, 10:41 PM -
Problem in batch file
By marwa in forum New To JavaReplies: 0Last Post: 08-14-2007, 10:24 AM -
problem when I try to delete a file
By tommy in forum Advanced JavaReplies: 2Last Post: 07-31-2007, 02:44 PM


LinkBack URL
About LinkBacks
Reply With Quote

Bookmarks