View Full Version : java
bodomTerror
22-11-2006, 10:28
avendo questo pezzo di codice:
if (tipo == "min")
{
while (giorno.hasNext())
{
press = giorno.next();
somma += press.getPress(tipo);
conta++;
}
}
se volessi fare nello stesso metodo tipo = "max", come faccio ad azzerare l'iterator giorno a 0 in modo ke ricominci a scorrere gli elementi :confused:
if (tipo == "min")Il confronto non va bene, ammesso che 'tipo' sia un String, stai solamente confrontando i due reference, non il contenuto delle stringhe.
Devi fare:
if (tipo.equals ("min"))
se volessi fare nello stesso metodo tipo = "max", come faccio ad azzerare l'iterator giorno a 0 in modo ke ricominci a scorrere gli elementi :confused:Dovresti ottenere un altro iteratore.
bodomTerror
22-11-2006, 11:01
devo mettere min o max alla creazione dell'oggetto nn devo confrontare, ti posto il metodo
public int mediaPress(String tipo)
{
int somma = 0;
int conta = 0;
int media = 0;
Iterator<Pressione> giorno = Pressione.iterator(); // java.util.Iterator
Pressione press;
if (tipo == "min")
{
while (giorno.hasNext())
{
press = giorno.next();
somma += press.getPress(tipo);
conta++;
}
}
}
e questo è getPress
public int getPress(String s)
{
if(s.equals("min"))
return min;
if(s.equals("max"))
return max;
else return 0;
}
Pressione press;
if (tipo == "min")
{Ma così confronti il reference ...
bodomTerror
22-11-2006, 11:27
kiamando il metodo mediaPress mi kiede di inserire min o max come stringa, se min questo -> press.getPress(tipo) mi ritorna il valore min se no max...ho provato a mettere due iterator e il metodo funziona
Penso che valga la pena chiarire un punto per quanti leggano quel codice e abbiano qualche dubbio. Come dice andbin, se tipo è uno String l'espressione:
tipo == "min"
restituisce true se e solo se il reference tipo punta allo stesso valore restituito dall'espressione "min".
Se il valore di tipo è il risultato di un'espressione costante di tipo String, allora
tipo == "min"
restituisce true non perchè le due stringhe sia letteralmente uguali ma perchè il prodotto di un'espressione costante di tipo String è un puntatore ad una stringa immagazzinata in un pool della jvm.
Dunque se:
String min = "min";
e
tipo = min;
allora
tipo == "min" è true
perchè:
"min" == "min" è true.
D'altronde basta cambiare una virgola perchè tutto vada a catafascio. Se min non punta più al prodotto di un'espressione costante di tipo String, ad esempio:
String min = new String("min");
allora:
min == "min"
sarà inevitabilmente false, a meno che non si passi da min alla sua versione interiorizzata:
min = min.intern();
bodomTerror
22-11-2006, 13:38
nn sono molto esperto, ma se nn cambio la stringa "min" nella sottoclasse dovrebbe essere a posto il metodo o no :confused: ...
Finchè "min" resta "min" e "max" resta "max" e tipo assume il valore di un'espressione costante di tipo string corrispondente alla sequenza di caratteri "min" o "max" (che nel tuo caso ritengo siano le espressioni di inizializzazione delle variabili min e max) sei a cavallo.
bodomTerror
22-11-2006, 15:09
ok :D quello volevo sapere....e ki la tocca la sottoclasse :cool:
bodomTerror
22-11-2006, 19:05
se volessi invece confrontare il valore di min e nn la stringa "min" così per esempio
if (press.getPress(min) < 50)
(ke nn funziona) come dovrei fare?
Perchè quel confronto sia valido il valore restituito dal metodo getPress deve essere di un tipo convertibile in numerico. Cioè uno qualsiasi tra primitivi Java diversi da boolean e tra le classi involucro diverso da Boolean.
Insomma, getPress(min) deve restituire un numero.
Il getPress che hai incollato precedentemente restituisce un numero intero per cui direi che se non va il problema sta nel tipo dell'argomento.
Se min è un int allora l'invocazione
press.getPress(min)
non va perchè il metodo getPress richiede come parametro una stringa (String).
Forse volevi dire:
if(press.getPress("min") < 50)
?
bodomTerror
22-11-2006, 20:02
dunque come mi hai detto funziona xò ce un altro problema "missing return statement" ma nn posso fare altrimenti o perlomeno nn mi viene in mente...
/**
* Metodo patologiaPressoria: restituisce, la patologia pressoria prevalente negli ultimi 7 giorni
* (minima bassa se < 50, massima alta se >150, nessuna se non ci sono patologie).
*/
public String patologiaPressoria()
{
int minBassa = 0;
int maxAlta = 0;
Iterator<Pressione> pressioneMin = Pressione.iterator(); // java.util.Iterator
Iterator<Pressione> pressioneMax = Pressione.iterator();
Pressione press; // oggetto press di tipo Pressione
while (pressioneMin.hasNext()) // oggetto successivo...
{
press = pressioneMin.next(); // acquisizione dell'oggetto
if (press.getPress("min") < 50)
minBassa++;
else if (press.getPress("max") > 150)
maxAlta++;
}
if (minBassa != 0)
{
if (minBassa > maxAlta)
return "minima bassa";
}
else if (maxAlta != 0)
{
if (maxAlta > minBassa)
return "minima alta";
}
else if ((minBassa>0 && minBassa==maxAlta))
{
return "minima bassa == massima alta";
}
else return "nessuna";
}
NULLA!! risolto stupidaggine stringa = "nessuna"; e poi return stringa :sofico:
:D In quella una nebbia di dangling else e return non ci vedrebbe neanche Nostradamus. Se fossi in te mi verrebbe in mente di dargli una sistemata :D
bodomTerror
22-11-2006, 20:31
:D In quella una nebbia di dangling else e return non ci vedrebbe neanche Nostradamus. Se fossi in te mi verrebbe in mente di dargli una sistemata :D
lool :D in effetti, ma nn funzionava neanke così....ho tolto tutti gli else così si capisce e funziona soprattutto ;) ty cmq
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.