[Java] Scrivi da stringa [Risolto]

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
CRIMON
Prode Principiante
Messaggi: 136
Iscrizione: domenica 30 agosto 2015, 18:38
Desktop: Unity\Mate
Distribuzione: Ubuntu 15.10
Sesso: Maschile

[Java] Scrivi da stringa [Risolto]

Messaggio 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);
	}

}
Ultima modifica di CRIMON il venerdì 24 febbraio 2017, 9:04, modificato 1 volta in totale.
Gerry Ghetto

Re: [Java] Scrivi da stringa

Messaggio 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?
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [Java] Scrivi da stringa

Messaggio 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.
CRIMON
Prode Principiante
Messaggi: 136
Iscrizione: domenica 30 agosto 2015, 18:38
Desktop: Unity\Mate
Distribuzione: Ubuntu 15.10
Sesso: Maschile

Re: [Java] Scrivi da stringa

Messaggio da CRIMON »

harpefalcata [url=http://forum.ubuntu-it.org/viewtopic.php?p=4961228#p4961228][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: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.
come faccio?
John_Marco
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 311
Iscrizione: martedì 5 maggio 2009, 19:55
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS X86_64
Sesso: Maschile
Località: Potenza - Roma

Re: [Java] Scrivi da stringa

Messaggio 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 :)
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [Java] Scrivi da stringa

Messaggio 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.
John_Marco
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 311
Iscrizione: martedì 5 maggio 2009, 19:55
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS X86_64
Sesso: Maschile
Località: Potenza - Roma

Re: [Java] Scrivi da stringa

Messaggio 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
CRIMON
Prode Principiante
Messaggi: 136
Iscrizione: domenica 30 agosto 2015, 18:38
Desktop: Unity\Mate
Distribuzione: Ubuntu 15.10
Sesso: Maschile

Re: [Java] Scrivi da stringa

Messaggio 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);
}

}
Avatar utente
nuzzopippo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1627
Iscrizione: giovedì 12 ottobre 2006, 11:34

Re: [Java] Scrivi da stringa

Messaggio da nuzzopippo »

CRIMON [url=http://forum.ubuntu-it.org/viewtopic.php?p=4961494#p4961494][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:ragazzi, ho ridefinito somma, l' unica cosa è che non so come implementare charAt(i) e isDigit, avete consigli, per il resto grazie,
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:

Codice: Seleziona tutto

java Sommaescrivi
1+
2+
3+
4+
= 10
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.
Fatti non foste a viver come bruti ...
CRIMON
Prode Principiante
Messaggi: 136
Iscrizione: domenica 30 agosto 2015, 18:38
Desktop: Unity\Mate
Distribuzione: Ubuntu 15.10
Sesso: Maschile

Re: [Java] Scrivi da stringa

Messaggio da CRIMON »

Grazie mille, ho capito, potete chiudere
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 13 ospiti