Search code examples
javastringtimedoublejfreechart

Convert String with Time Value "0:00" into decimal/double value?


I am attempting to retrieve data from a table and convert them to double values in order to graph them. column 0 is filled with time values in the format of "00:00" and column 1 is filled with decimal values.

With this code I seem to have properly retrieved the data and converted the contents on column 1 to double value, but do not know how to convert a String with time values into double values in order to represent number of hours:

int row = tableRadio.getRowCount();
    for (int r = 0; r  < row; r++) {
        double r2 = Double.parseDouble( tableModel.getValueAt(r, 0).toString() );
        double r3 = Double.parseDouble( tableModel.getValueAt(r, 1).toString() );
        series.add(r2, r3);
    }

I keep getting java.lang.NumberFormatException: For input string: "0:00" when attempting to graph this data, which from what I understand is because a colon can not be equated with a number value. But how can I get say, "00:21" to instead show up as "0.21" or something that I can use to graph my data? Any suggestions and examples are welcome.


Solution

  • So I got it working using @Dawood ibn Kareem's method. Here's the final code that worked for me:

        //get number of rows
        int row = tableRadio.getRowCount();
        for (int r = 0; r  < row; r++) {
    
            //get column0's values and convert to String
            String time = ( tableModel.getValueAt(r, 0).toString() );
    
            //split time into two arrays
            String[] timeSplit = time.split(":");
    
            //convert arrays to doubles 
            double hours = Double.parseDouble(timeSplit[0]);
            double min = Double.parseDouble(timeSplit[1]);
    
            //represent column0 values by number of hours
            double col0 = (min / 60) + hours;
    
            //get column1's values and convert to double
            double col1 = Double.parseDouble( tableModel.getValueAt(r, 1).toString() );
    
            //add values to series
            series.add(col0, col1);
        }//end of for loop`
    

    Now all of the table values are converted to doubles and I have gotten them to graph successfully.