Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    controllare se in un vettore c'è un intero, float ecc.

    ciaooo ragazzi vi volevo chiedere una cosa
    io ho un vettore di stringhe, come posso controllare se all'interno del vettore ed esattamente in una delle sue posizioni c'è un int oppure un float o carattere ecc....

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    mmm buona!
    Allora per escludere char, ti basta che sia di lunghezza maggiore di 1.
    Per int e float invece potresti procedere in modi diversi:

    tramite espressioni regolari, sulla stringa stessa, controllando che non vi siano caratteri diversi da numeri e/o 1 tra virgola e/o punto come separatore per decimali.

    Oppure provi ad utilizzare i wrapper per Float e Integer, ma come idea non mi piace molto.

    Qualsiasi stringa di lunghezza 1 è un potenziale char, a meno che per char to non intendessi "qualsiasi carattere non numerico". Nel qual caso, si torna a risolvere con espressione regolare.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    92
    Strutturare anche i valori da immettere come oggetti e usare istanceof no?

    So che sembra na follia, ma sarebbe il modo più logico di usare un linguaggio nato per gli "Oggetti"

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Originariamente inviato da salvio78
    Strutturare anche i valori da immettere come oggetti e usare istanceof no?

    So che sembra na follia, ma sarebbe il modo più logico di usare un linguaggio nato per gli "Oggetti"
    Ma non ha detto che sono String?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    92
    Impossibile!Scusa non avevo letto, ma se so stringhe non possono essere float o int, vedi perchè sarebbe meglio usare il concetto di oggetto puro e non spuro con i tipi primitivi?

    Se avesse fatto un vettore di object, avrebbe potuto metterci quello che voleva, inoltre avrebbe capito perchè quello che dice non ha senso.

    se avesse scelto sta tecnica progettuale convertendo a monte le stringhe in altri oggetti wrapper con istance of non avrebbe nessuna difficolta addirittura nel farsi dire quali indici del vettore sono di un tipo o anche dato l'indice di che tipo di oggetto si trattava, salvo poi riconvertirlo in stringa qualora ne avesse avuto bisogno.

    A mio parere la scelta progettuale è stata pessima e il risultato è questo quà.

    Riscrivi la classe convertendo le stringhe da immagazzinare nei tipi, il problema è che 1 può essere sia un carattere che un intero, quindi dovrai scrivere codice a iosa, almeno che nelle librerie non ci sia qualche cosa che lo faccia per te, ma il mio consiglio è la conversione della stringa a monte, istanza del tipo wrapper corrisondente, ed eviterai un sacco di problemi.

    Si lo so non ti risolvo il problema, ma se è così pressante una ricerca nel vettore per tipi, meglio fare con le wrapper e istanceof.

    Questo a mio onesto parere IMHO!

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Non sempre è possibile avere i dati nella forma che si vorrebbe (ad esempio se arrivano da qualche procedura esterna su cui non si può mettere le mani...). Tornando al problema originale, usa le espressioni regolari.

    Saluti.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    scusate e vero io potrei utilizzare un vettore di object, ma se in una cella io ho questo valore : "12a" perchè un utente ha sbagliato a digitare il valore come posso mettere questo valore all' interno di una variabile Int senza usare le eccezioni?

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    92
    la metti come oggetto Object o come stringa, però se non ci dici chiaramente vita morte e miracoli, come si fa a capire come intervenire su sto benedetto codice...

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    92
    Per la serie meglio tardi che mai.

    Potreti fare così per riconoscere l'elemento:

    try
    {Integer i = Integer.parseInt(s);
    return i;
    }
    catch(NumberFormatException eInt)
    {
    try
    {double d = Double.parseDouble(s);
    return d;
    }
    catch(NumberFormatException eDouble)
    {
    return s;
    }
    }

    Puoi poi aggiumgere tuttii blocchi try catch inclusi, dove s rappresenta una generica stringa estratta dal vettore e convertite tramite un metodo a parte che usera questo brano di codice.

    Io mi sono fermato all'intero e al double che dovrebbe includere più o meno tutti i numeri che saranno memorizzati, ricordati che se inserisci un blocco try catch double prima del float, potrebbe non lanciare l'eccezione, in quanto di default tutti i numeri decimali sono Double, quindi anche se hai memorizzato nel vettore un float a runtime potrebbe segnalarti che c'è un double, in quanto il compilatore potrebbe effettuare una promozione automatica.

    Buon lavoro.

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.