Ragazzi scusate ma devo risolvere un problema....
in pratica avendo un array di byte es{1,2,3,4,5} e dovrei ritonare nel metodo che sto facendo il numero INTERO 12345.
Suggerimenti?(magari anche il codice!!!!!Sono nuovo dell'ambiente java).
Ragazzi scusate ma devo risolvere un problema....
in pratica avendo un array di byte es{1,2,3,4,5} e dovrei ritonare nel metodo che sto facendo il numero INTERO 12345.
Suggerimenti?(magari anche il codice!!!!!Sono nuovo dell'ambiente java).
Il computer è spettacolarmente veloce, accurato e stupido.....L'uomo è spettacolarmente lento, inaccurato e intelligente.Insieme formano una potenza oltre l'immaginazione
Ma è davvero semplice, lo spiego a parole. Tieni una variabile (es. 'res') per il risultato, inizialmente a 0.Originariamente inviato da mattodijava
Ragazzi scusate ma devo risolvere un problema....
in pratica avendo un array di byte es{1,2,3,4,5} e dovrei ritonare nel metodo che sto facendo il numero INTERO 12345.
Prendi il primo valore (1), moltiplichi res per 10 e sommi valore (res era 0 ... ottieni 1).
Prendi il secondo valore (2), moltiplichi res per 10 e sommi il valore (res era 1, per 10=10, poi più 2=12).
Prendi il terzo valore (3), moltiplichi res per 10 e sommi il valore (res era 12, per 10=120, poi più 3=123).
Hai già capito? Semplicemente moltiplichi per 10 ("sposti" a sinistra di una cifra il risultato) e poi ci sommi il valore. Ovviamente non fare le singole operazioni ripetute .... fai un ciclo for visto che hai un array!!
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Perfetto ma risulta se nell'array ho
byte[] x={11,12,13,14,15};
?????
a me sembra di no....
Il computer è spettacolarmente veloce, accurato e stupido.....L'uomo è spettacolarmente lento, inaccurato e intelligente.Insieme formano una potenza oltre l'immaginazione
byte[] vett = {100,13,14,15,16};//10.013.141.516
long res=0;
for (int i = 0;i<vett.length; i++){
if(vett[i]>100)
res= ((res*1000)+vett[i]);
else{
if(vett[i]>10)
res=((res*100)+ vett[i]);
else
res=((res*10)+ vett[i]);
}
}
System.out.println(res);
ti piace come corpo del metodo???
il problema è che devo ritornare un int ma se nell'array ho valori che mi vanno da 100 a 127 sn fregato e la variabile res deve essere long...
ma nn posso fare un cast perchè perdo di precizione
come faccio????
se è come penso io allora il prof è scemo e si deve ritornare un long.
Il computer è spettacolarmente veloce, accurato e stupido.....L'uomo è spettacolarmente lento, inaccurato e intelligente.Insieme formano una potenza oltre l'immaginazione
In questo caso no .... presupponevo che i valori fossero 0-9 (non avevi precisato!). Se sono di un range diverso, basta solo moltiplicare il risultato (prima della somma del valore) per 10^cifre_nuovo_valore. Se ad esempio devi "infilare" dietro un numero 123 è intuitivo pensare che il risultato devo prima moltiplicarlo per 1000 per fare spazio a 3 nuove cifre decimali!!!Originariamente inviato da mattodijava
Perfetto ma risulta se nell'array ho
byte[] x={11,12,13,14,15};
?????
a me sembra di no....
Il concetto è quello. Ma ti segnalo che:Originariamente inviato da mattodijava
ti piace come corpo del metodo???
- ci sono troppe parentesi che sono del tutto superflue
- si poteva usare else if
- la comparazione deve essere per >= ... non > (andrebbe bene > ma in tal caso devi scalare di 1, quindi 9, 99)
E in modo estremo la operazione si poteva anche scrivere:
codice:res = res * (vett[i] >= 100 ? 1000 : vett[i] >= 10 ? 100 : 10) + vett[i];Il massimo valore positivo di un int è 2147483647 ... di più non puoi andare (altrimenti ... overflow!).Originariamente inviato da mattodijava
il problema è che devo ritornare un int ma se nell'array ho valori che mi vanno da 100 a 127 sn fregato e la variabile res deve essere long...
ma nn posso fare un cast perchè perdo di precizione
Non so cosa ti ha chiesto precisamente il prof. Nel senso che non posso certo sapere io quanti byte devi avere e con quali valori.Originariamente inviato da mattodijava
se è come penso io allora il prof è scemo e si deve ritornare un long.
Se ad esempio il prof ti ha detto di usare esattamente quella sequenza 100,13,14,15,16 e ti ha anche specificato di usare int (e non long) .... o il prof non sa il range di un int oppure voleva fregarti ...![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Innanzitutto cerca di utilizzare i tag CODE quando posti del codice, così eviti quell'accozzaglia.Originariamente inviato da mattodijava
ti piace come corpo del metodo???
il problema è che devo ritornare un int ma se nell'array ho valori che mi vanno da 100 a 127 sn fregato e la variabile res deve essere long...
ma nn posso fare un cast perchè perdo di precizione
come faccio????
se è come penso io allora il prof è scemo e si deve ritornare un long.
In secondo luogo, se hai un array di questo tipo:
Che numero dovrebbe uscirti? Credo che andbin (come tutti qui dentro) avesse capito che ciascun elemento dell'array dovesse essere una cifra (valore tra 0 e 9), non un numero tra 0 e 255 (o 127, se signed)... altrimenti che senso avrebbe il tutto? E torna la domanda... che risultato dovrebbe dare l'algoritmo, con un array come quello dell'esempio che ho proposto sopra? Perchè le cose cambiano a seconda di quale risultato si accetta per buono...codice:{11, 12, 13, 14}
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
ragazzi grazie a tutti ho risolto il problema.
chi ha inventato questo forum è un grande....................
siete pure voi speciali che mi aiutate....
Il computer è spettacolarmente veloce, accurato e stupido.....L'uomo è spettacolarmente lento, inaccurato e intelligente.Insieme formano una potenza oltre l'immaginazione
Bene... ora dovresti rispondere anche alle domande che ti sono state poste e fornire la soluzione che hai adottato, così da permettere di trovare la risposta ad un utente che avesse la tua stessa problematica.Originariamente inviato da mattodijava
ragazzi grazie a tutti ho risolto il problema.
chi ha inventato questo forum è un grande....................
siete pure voi speciali che mi aiutate....
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