Pagina 1 di 1
[Java] Scrivi da stringa [Risolto]
Inviato: mercoledì 22 febbraio 2017, 20:19
da CRIMON
salve, ho un problema, devo fare in pratica un programma che data una stringa di test mi :
-somma tutti i numeri contenuti
-scriva uno per uno i numeri a schermo
ho provato così, ma c' è qualcosa che non va col java.lang:
Codice: Seleziona tutto
import java.lang.*;
public class Sommaescrivi {
public static void main(String[] args) {
// TODO Auto-generated method stub
String stringa = "2,3,ciao,4";
for(int i=0;i<stringa.length();i++){
if(isDigit(i))
somma = somma+i;
System.out.println(i);
}
System.out.println(somma);
}
}
Re: [Java] Scrivi da stringa
Inviato: mercoledì 22 febbraio 2017, 22:50
da Gerry Ghetto
if(isDigit(i)): La variabile i è un integer, quindi il risultato é sempre true (se isDigit funziona come lo aspetto).
Dove hai definito la variabile somma?
Re: [Java] Scrivi da stringa
Inviato: giovedì 23 febbraio 2017, 8:36
da DoctorStrange
Oltre a quanto detto da Gerry, visto che la stringa che passi in ingresso è un misto di testo e costanti numeriche, devi istruire il codice in maniera tale che sappia che la virgola è il carattere separatore, e come comportarsi tra numeri e lettere.
Re: [Java] Scrivi da stringa
Inviato: giovedì 23 febbraio 2017, 8:39
da CRIMON
Re: [Java] Scrivi da stringa
Inviato: giovedì 23 febbraio 2017, 9:22
da John_Marco
Ciao,
potresti provare come primo approccio un semplice ciclo che, data la stringa, ci cicla sopra e per ogni elemento (guarda
charAt) verifica se questo è un numero o meno (guarda il metodo statico
parseInt con la gestione delle eccezioni se in input hai qualcosa che non è un numero). Da qui in poi dovrebbe essere semplice.
Inoltre, ma solo come complemento, puoi anche non importare il package java.lang perchè viene importato di default

Re: [Java] Scrivi da stringa
Inviato: giovedì 23 febbraio 2017, 9:32
da DoctorStrange
Se non sbaglio c'era un pacchetto che mi sembra venisse incluso nel setup dell'ambiente di sviluppo di base, che ti serviva proprio per questo genere di cose.
Se non sbaglio si trova proprio nel pacchetto lang.
Prova a vedere i metodi "trim" o simili per la gestione delle stringhe, gli devi passare il tipo di separatore e, in base a quello il metodo ti restituisce un elenco di membri della stringa, la dimansione e la posizione.
Re: [Java] Scrivi da stringa
Inviato: giovedì 23 febbraio 2017, 10:01
da John_Marco
Se conosci già la composizione della stringa e sai che è CSV, allora il metodo suggerito da harpefalcata è più rapido :
- utilizzi split di String che, dato un carattere separatore, ti restituisce un array di stringhe "separate"
- fai i controlli su ogni elemento di questo array
Re: [Java] Scrivi da stringa
Inviato: giovedì 23 febbraio 2017, 19:28
da CRIMON
ragazzi, ho ridefinito somma, l' unica cosa è che non so come implementare charAt(i) e isDigit, avete consigli, per il resto grazie, somma l' avevo scrodato, fuori un errore
per ora è così:
import java.lang.*;
public class Sommaescrivi {
public static void main(String[] args) {
// TODO Auto-generated method stub
String stringa = "2,3,ciao,4";
int somma=0;
for(int i=0;i<stringa.length();i++){
if(charAt(i).isDigit())
somma = somma+i;
System.out.println(i);
}
System.out.println(somma);
}
}
Re: [Java] Scrivi da stringa
Inviato: venerdì 24 febbraio 2017, 6:07
da nuzzopippo
Il consiglio che trovo più opportuno darTi è quello di organizzare le idee prima di codificare, per far ciò è bene leggere un pochino prima e studiarsi il codice fatto :
1 - "
isDigit" è un
metodo della classe Character, applicandolo direttamente avresti un errore di referenziazione;
2 - "
charAt()" è un metodo della classe String e quindi va richiamato da oggetti di tal genere;
3 - per eseguire la somma deve essere utilizzato un valore intero derivato dalla stringa letta, non i, che è un indice, un possibile modo è utilizzare il metodo "
parseInt()" della
classe Integer, dandogli in pasto la
sottostringa determinante il numero
con tali considerazioni, una versione funzionante del Tuo codice sarebbe :
Codice: Seleziona tutto
public class Sommaescrivi {
public static void main(String[] args) {
// TODO Auto-generated method stub
String stringa = "2,3,ciao,4";
int somma=0;
for(int i=0;i<stringa.length();i++){
if(Character.isDigit(stringa.charAt(i))) {
somma = somma + Integer.parseInt(stringa.substring(i,i+1));
System.out.println(stringa.substring(i,i+1)+ "+");
}
}
System.out.println("= " + somma);
}
}
(nota che non è necessario importare java.lang). Comunque anche tale metodologia non è corretta, infatti se un numero fosse composto di due cifre la somma sarebbe errata, infatti, posta la stringa come "12,3,ciao,4" l'output sarebbe:
e non 19. Il corretto approccio Ti è stato già suggerito in precedenza : utilizza il
metodo split() degli oggetti stringa e il metodo parseInt() della classe Integer (già indicato il link relativo) per computare correttamente le somme.
Re: [Java] Scrivi da stringa
Inviato: venerdì 24 febbraio 2017, 9:04
da CRIMON
Grazie mille, ho capito, potete chiudere