Visualizzazione stampabile
-
1 allegato(i)
aiuto array java
salve a tutti, qualcuno che conosce il java potrebbe aiutare me, un novellino universitario? :D avevo creato una classe con un array di grandezza 4 a cui ho assegnato in [0] e [1] i valori rispettivamente 1 e 2, e poi creato con un for un algoritmo che completasse mettendo 3 e 4 nelle altre 2 allocazioni, ma, ahimè, pur non trovando errori di compilazione in cmd mi da scritte totalmente diverse... poi, giusto per esercitarmi, ho inglobato tutto in un if, se alla domanda rispondevo S, allora mi faceva vedere quel lavoretto (mal andato) con gli array, altrimenti no. però qualsiasi cosa metta mi salta direttamente in else... qualcuno può aiutarmi e corregermi eventuali errori di fondo? :) in allegato il zip del codice..Allegato 34731
-
Ciao,
l'errore, abbastanza comune in verità (lo faccio spesso anche io :P). L'operatore == per i tipi primitivi del linguaggio di programmazione (come int, char ecc..) fa la comparazione sul valore; per le classi, invece, compara la cella di memoria. Nel tuo caso risposta==("S") e risposta==("N") risultano sempre false perché la cella di memoria che è ovviamente diversa (non mi dilungo troppo su questo aspetto, se vuoi lo spiego meglio). Per fare una comparazione di stringhe (ma più in generale tra le classi) devi utilizzare il metodo equals(Object arg0). Per esempio se scrivi "S".equals(risposta) la funzione restituirà true se risposta contiene il carattere S (maiuscolo), false altrimenti. Se vuoi fare un confronto case insensitive puoi usare equalsIgnoreCase(String arg0), per esempio: "S".equalsIgnoreCase(risposta) restituirà true se risposta è S o s, false negli altri casi.
Spero di esser stato chiaro.
Ciao
Alex Mercer
N.B.
ho sempre richiamato il metodo equals su una costante, nulla ti vieta di mettere risposta.equals("S") ma questo potrebbe generare un NullPointerException nel caso di risposta == null, se lo usi come ho detto io no
-
mmm mettendo if("S".equals(risposta)) mi da corretto :) invece per la questione dell'array come mai da quella schifezza e non ciò che vorrei fare? :/ scusami se comemtto errori banalissimi ma studio java da... 1 mese? :/
-
Ciao,
sono errori che facevo anch'io quando mi sono approcciato a questo linguaggio ;), quindi non scusarti. Allora, quando scrivi System.out.println(Object) la funzione stampa su console quello che l'oggetto restituisce al metodo toString() (è un metodo che ha l'oggetto Object cioè il padre di tutti gli oggetti Java). Questa funzione, se non sovrascritta, stampa la cella di memoria dell'oggetto (che è praticamente useless per chiunque ;) ). Per stampare un array esistono sostanzialmente 2 modi, uno un pò classico e uno invece introdotto da poco (nella versione 6 di Java se non erro).
Il primo è
codice:
for(int index=0;index<unarrayf.length; i++)
System.out.println(unarrayf[index]);
che è praticamente la stessa cosa che hai usato per inserire gli ultimi 2 valori dell'array
L'altro metodo consiste nel usare l'operatore :, che permette di listare un oggetto iterabile, così
codice:
for(int numero : unarrayf)
System.out.println(numero);
Questo metodo funziona benissimo per leggere i valori, un pò meno bene per scriverli (in pratica funziona solo per gli oggetti, non per primitivi).
Se hai altre domande chiedi pure :)
Ciao
Alex Mercer