Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    Convertire , in .

    Salve ragazzi,
    sto realizzando un'applicazione java che riceve in ingresso un file.txt composto da una prima colonna di tipo stringa e altre di tipo dato(double).
    L'ho strutturato come una Map composta da una chiave di tipo stringa e un array di double come value.
    Il problema è che i dati andranno messi in un database e spesso possono prevedere nell'array di double la possibilità che il numero sia espresso con la virgola e non col punto

    123,4 invece di 123.4

    Come posso realizzare una semplice funzione di conversione delle , in .?
    Potete aiutarmi col codice che ho visto le varie classi Locale,DecimalFormat ma non riesco ad applicarle al mio codice?
    Vi ringrazio in anticipo



    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.Map;
    import java.util.StringTokenizer;
    import java.util.HashMap;
    public class AddDb2 {
    private static String fileName = "Dato2.txt";
    private Map <String, double[]>dataMap = null;
    private int Nrows=0;
    private int Ncol=0;
    public static void main(String[] args) throws IOException {
    new AddDb2();
    }


    public AddDb2() throws IOException { //constructor
    /* Get a reference to the input file. */
    FileReader file = new FileReader(fileName);
    BufferedReader br = new BufferedReader(file);
    /* Create the empty map. */
    this.dataMap = new HashMap<String, double[]>();/*Constructs an empty HashMap
    with the default initial capacity (16) and the default load factor (0.75).*/
    /* Populate the map from the input file. */
    populateMap(br);
    Ncol=dataMap.size()+1;//include the first string row
    System.out.println("Il numero di colonne e'"+(Ncol+1));
    /* Display the contents of the map. */
    displayMap(this.dataMap);
    /* Close the reader. */
    br.close();
    }



    /**
    * Populate an HashMap from an input file.
    *
    *

    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) {
    Nrows++;
    /* 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();
    // int numberOfNumericColumns = ColNumber- 1;
    int numberOfNumericColumns = st.countTokens()-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); /*Associates the specified value with
    the specified key in this map.*/
    }
    System.out.println("Il numero di righe del file e'"+Nrows);

    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(2) + " : ");
    /* 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 ,allora metti ;
    System.out.print(myArray[ix] + "; ");
    } else { //the value is the last one in the array ,la linea finisce così
    System.out.println(myArray[ix]);
    }
    }
    }
    }
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Convertire , in .

    Originariamente inviato da gbattine
    123,4 invece di 123.4

    Come posso realizzare una semplice funzione di conversione delle , in .?
    La classe String ha il metodo replace.
    codice:
    String str = "123.4";
    str = str.replace ('.', ',');
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.