Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258

    input da console di un double

    Ciao a tutti, vorrei prendere un double da console, inserendo un valore tipo cosi: 12.12333 con il punto, ma facendo cosi:

    import java.io.*;
    import java.util.Scanner;

    .......

    Scanner input = new Scanner(System.in);
    double b=0;

    System.out.println("inserisci il valore decimale da convertire: ");
    if(input.hasNextDouble()) b = input.nextDouble();
    mi accetta solo un valore in stile 12,123333, perchè se metto il punto ottengo un valore non corretto. Io vorrei invece proprio mettere il punto : )

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    ok questa è la soluzione:

    input.useLocale(new Locale("English"));

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Lucked
    input.useLocale(new Locale("English"));
    Non mi pare proprio che venga accettato il nome della lingua!! Nel tuo caso va in inglese ... ma solo "per caso" perché non capendo cosa hai passato trova di certo il default dell'inglese.

    Il language code è il codice 2-lettere ISO-639. Quindi:

    new Locale("en")

    o più semplicemente la costante predefinita.

    Locale.ENGLISH
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    Ah, ti ringrazio, però stavo vedendo che c'è questo problema...mi accetta un numero come 1,234 come se avessi inserito 1234, c'è qualche modo per far riconoscere come sbagliata l'uso della virgola?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,319
    Spiega meglio quello che vuoi fare.

    Assegnando il locale ENGLISH hai fatto in modo che la virgola venga considerata come separatore delle migliaia, mentre il punto venga considerato come "punto decimale".

    Assegnando il locale ITALY faresti in modo che avvenga il contrario: la virgola venga considerata "punto decimale", mentre il punto venga considerato come separatore delle migliaia.

    Cos'è che vuoi ottenere tu?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    io voglio il punto come separatore per i decimali e che non si possa mettere la virgola, altrimenti si fanno errori di inserimento, del tipo che uno crede di mettere 1,234 e invece ha messo 1234.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    ho trovato la soluzione. Prendo una linea, sotto forma di stringa e poi la traduco in double. Cosi:

    codice:
      double b=0;
      boolean x = false;
      System.out.println("inserisci il valore decimale da convertire: ");
    do{
    
      try{
         String s = input.nextLine().trim();
         b = Double.parseDouble(s);
         x=false;
      } catch (NumberFormatException e){
        System.out.println("Non hai inserito un valore decimale");
        x = true;
      }
    } while(x);
    per quanto riguarda il valore booleano per far ripetere l'immissione, che dite, è poco elegante? cmq cosi, funziona.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    mi è venuta un ideona, faccio cosi:

    codice:
      double b=0;
      System.out.println("inserisci il valore decimale da convertire: ");
    do{
    
      try{
         String s = input.nextLine().trim();
         b = Double.parseDouble(s);
      } catch (NumberFormatException e){
        System.out.println("Non hai inserito un valore decimale");
      }
    } while(b==0);

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.