Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / May 2006

Tip: Looking for answers? Try searching our database.

Exception in thread "main" java.lang.NumberFormatException

Thread view: 
gbattine - 30 May 2006 12:35 GMT
Hi, thanks to your helps i have developed a java application that
receive an input file dato2.txt with this format

string double double double...... read the file and create an object
with the key and the value.

When i compile i have no error but at runtime i have this exception

Caricamento dell'array di double in corso..... Il numero di colonne del
file Þ12 Exception in thread "main" java.lang.NumberFormatException:
For input string: "2 527,515572" at
sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) at
java.lang.Double.parseDouble(Unknown Source) at
AddDb2.populateMap(AddDb2.java:73) at AddDb2.<init>(AddDb2.java:21) at
AddDb2.main(AddDb2.java:12)

Here is the code:

//package gbattine;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.TreeMap;
public class AddDb2 {
   private static String fileName = "Dato2.txt";
   private Map <String, double[]>dataMap = null;
   public static void main(String[] args) throws IOException {
       new AddDb2();
   }
   public AddDb2() throws IOException {
       /* Get a reference to the input file. */
       FileReader file = new FileReader(fileName);
       BufferedReader br = new BufferedReader(file);
       /* Create the empty map. */
       this.dataMap = new TreeMap<String, double[]>();  //mettere hash
       /* Populate the map from the input file. */
       populateMap(br);
       /* Display the contents of the map. */
       displayMap(this.dataMap);
       /* Close the reader. */
       br.close();
   }
   /**
    * Populate a TreeMap from an input file.
    *
    * <p>This method accomodates an input file with any number of
lines in
it. It also
    * accomodates any number of doubles on the input line as long as
the
first value on the
    * line is a String. The number of doubles on each input line can
also
vary.</p>
    *
    * @param bufferedReader
    * @return a Map that has one element for each line of the input
file;
the key is the first column from the input file and the entry is the
array
of doubles that follows the first column
    * @throws IOException
    */
   public Map populateMap(BufferedReader bufferedReader) throws
IOException
{
       System.out.println("Caricamento dell'array di double in
corso.....");
       /* Store each line of the input file as a separate key and
entry in
the Map. */
       String line = null;
       while ((line = bufferedReader.readLine()) != null) {
           /* Create a tokenizer for the line. */
           StringTokenizer st = new StringTokenizer(line);
           /*
            * Assuming that the first column of every row is a String
and
the remaining columns
            * are numbers, count the number of numeric columns.
            */
           int ColNumber=st.countTokens()-1;
           //int numberOfNumericColumns = st.countTokens() - 1;
           int numberOfNumericColumns=(ColNumber-1);
           System.out.println("Il numero di colonne del file
è"+ColNumber);
           /*
            * Get the first token from the line. It will be a String
and
its value will be a
            * unique key for the rest of the row.
            */
           String key = st.nextToken().trim();
           /* Create the array for the numbers which make up the rest
of
the line. */
           double[] array = new double[numberOfNumericColumns];
           /* Populate the array by parsing the rest of the line. */
           for (int column = 0; column < numberOfNumericColumns;
column++)
{
               array[column] =
Double.parseDouble(st.nextToken().trim());
           }
           /* Store the first column as the key and the array as the
entry.
*/
           this.dataMap.put(key, array);
       }

       return this.dataMap;
   }
   public void displayMap(Map<String,double[]> myMap) {
       /* Iterate through the values of the map, displaying each key
and
its corresponding array. */
       for (Map.Entry<String, double[]> entry : myMap.entrySet()) {
           /* Get and display the key. */
           System.out.print(entry.getKey() + " : ");  //$NON-NLS-1$
           /* Get the array. */
           double[] myArray = entry.getValue();
           /*
            * Display each value in the array. Put a semicolon after
each
value except the last.
            * Keep all the values for a given key on a single line.
            */
           for (int ix = 0; ix < myArray.length; ix++) {
               if (ix <  myArray.length - 1) { //the value is not the
last one in the array
                   System.out.print(myArray[ix] + "; "); //$NON-NLS-1$

               } else { //the value is the last one in the array
                   System.out.println(myArray[ix]);
               }
           }
       }
   }
}

Another question is:how can i return from this function the ColNumber
value to import it in another function that i'm developing? Thanks very
much
vulkanino - 30 May 2006 12:47 GMT
float and double numbers *must* have the floating part separated with a
dot, not a comma. read the exception description:

... For input string: "2 527,515572" at ...
Thomas Weidenfeller - 30 May 2006 13:15 GMT
> For input string: "2 527,515572" at
[...]
> Double.parseDouble(st.nextToken().trim());

Use http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html
to parse a number in another format than Java's default notation.

> Another question is:how can i return from this function the ColNumber
> value to import it in another function that i'm developing?

Yes, but why do you want to do this? Map.size() already tells you the
number of columns (-1).

/Thomas

Signature

The comp.lang.java.gui FAQ:
ftp://ftp.cs.uu.nl/pub/NEWS.ANSWERS/computer-lang/java/gui/faq
http://www.uni-giessen.de/faq/archiv/computer-lang.java.gui.faq/



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.