7

I am new to Java. I have one text file with below content.

`trace` -
structure(
 list(
  "a" = structure(c(0.748701,0.243802,0.227221,0.752231,0.261118,0.263976,1.19737,0.22047,0.222584,0.835411)),
  "b" = structure(c(1.4019,0.486955,-0.127144,0.642778,0.379787,-0.105249,1.0063,0.613083,-0.165703,0.695775))
 )
)
  

Now what I want is, I need to get "a" and "b" as two different array list.

6
  • 4
    "as two different"? You need to try to explain more clearly what you want. Maybe in the meantime the Java I/O tutorial can be useful to you. Commented May 11, 2011 at 8:38
  • Please, be more specific. What is a and what is b? Commented May 11, 2011 at 8:40
  • 1
    Do you want to serialize and deserialize the java objects? Commented May 11, 2011 at 8:45
  • If that is a text file, you can use FileReader and use split("\"") with the lines that matches "a" and "b". Do you mean something like that? Commented May 11, 2011 at 8:45
  • Will the structure of the file remains same? If yes Than you can use BufferedInputStream and parse the string to create array. Commented May 11, 2011 at 8:45

2 Answers 2

7

You need to read the file line by line. It is done with a BufferedReader like this :

try {
    FileInputStream fstream = new FileInputStream("input.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
    String strLine;         
    int lineNumber = 0;
    double [] a = null;
    double [] b = null;
    // Read File Line By Line
    while ((strLine = br.readLine()) != null) {
        lineNumber++;
        if( lineNumber == 4 ){
            a = getDoubleArray(strLine);
        }else if( lineNumber == 5 ){
            b = getDoubleArray(strLine);
        }               
    }
    // Close the input stream
    in.close();
    //print the contents of a
    for(int i = 0; i < a.length; i++){
        System.out.println("a["+i+"] = "+a[i]);
    }           
} catch (Exception e) {// Catch exception if any
    System.err.println("Error: " + e.getMessage());
}

Assuming your "a" and"b" are on the fourth and fifth line of the file, you need to call a method when these lines are met that will return an array of double :

private static double[] getDoubleArray(String strLine) {
    double[] a;
    String[] split = strLine.split("[,)]"); //split the line at the ',' and ')' characters
    a = new double[split.length-1];
    for(int i = 0; i < a.length; i++){
        a[i] = Double.parseDouble(split[i+1]); //get the double value of the String
    }
    return a;
}

Hope this helps. I would still highly recommend reading the Java I/O and String tutorials.

Sign up to request clarification or add additional context in comments.

Comments

2

You can play with split. First find the line in the text that matches "a" (or "b"). Then do something like this:

Array[] first= line.split("("); //first[2] will contain the values

Then:

Array[] arrayList = first[2].split(",");

You will have the numbers in arrayList[]. Be carefull with the final brackets )), because they have a "," right after. But that is code depuration and it is your mission. I gave you the idea.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.