 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
[JAVA][HELP] Stringbuffer Clicca QUI per vedere il messaggio nel forum |
nastanada |
leggendo gli esercizi di laboratorio di informatica per il 10 ho notato che è fondamentale conoscere la classe stringbuffer e i metodi charAt() e setCharAt() .....tuttavia nessuni li ha spiegati (per quanto riguarda il turno 2...nell'1 non lo so...) ...è stato fatto solo un accenno dal prof Cazzola ma nulla di più.... in internet nn si trovano info dettagliate e soprattutto esempi...
...mi chiedo: come facciamo a fare gli esercizi???
grazie dell'attenzione |
foolish |
hai letto le api??
quello che dicono è poco ma si capisce abbastanza il loro funzionamento a volte. ora per quanto riguarda lo StringBuffer non saprei... ma non mi hanno mai tradito.
il link lo trovi tranquillamente dal sito per le sottoposizioni oppure dal sito della sun. |
Mifune |
Intervento del moderatore: Per l'ennesiva volta ti ricordo che è un hoster apposito ;) |
monterika |
Anche avendo letto la documentazione del sito della sun trovo difficoltà nell'utilizzo delle StringBuffer e del setCharAt per mancanza di esempi......qualcuno conosce un sito con degli esempi?
Grazie |
zeus |
ehm.....
scusate, ma al di là del fatto che nessuno ci ha spiegato, mi pare, il metodo setCharAt e la classe StringBuffer (e sulla documentazione delle api non è che si capisca molto...), ho letto l'esercizio ed ho provato a farlo. Mentre lo facevo ho ripensato al testo e l'ho riletto:
<< [...] che lette due stringhe ne crea una terza contenente la loro concatenazione, il tutto usando solo i metodi charAt e setCharAt() della classe StringBuffer [...]>>
Cosa significa "solo"?... l'esercizio si può svolgere in due minuti senza nessuno di quei metodi.... basta leggere le stringhe, assegnarle a due variabili e stamparle concatenate con il + .....
Perchè dobbiamo fare un esercizio del genere?.....
:? :roll: :pccrash:
mmhhh.... :alsono: |
zeus |
Originally posted by 0m4r
www.koders.com
RULEZ !!!!
:cool:
:approved: |
BodomChild |
Beh semplicemente per farti capire a cosa serve e come si usa StringBuffer. Che tra l'altro e' utilissimo.
Allora:
Inventiamoci una variabile di Tipo StringBuffer e diciamogli che deve poter contenere 5 caratteri.
code:
StringBuffer pippo=new StringBuffer();//creo pippo
String tst="ciao";
pippo.setLength(5);//dico a pippo che deve essere lunga 5
for(int i=0;i<pippo.length();i++){//var i che parte da 0 fino alla lunghezza di pippo
pippo.setCharAt(i,tst.charAt(i));/*Infila il carattere alla posizione i in pippo, il carattere che devi mettere nella 'StringBuffer pippo' è -ogni carattere di tst.-*/
}
Spero di esser stato comprensibile per utilizzo di StringBuffer... in pratica prima gli dici quanto vuoi che sia grosso il recipiente pippo.
una volta settato, lui crea lo stringbuffer pippo lungo quanto gli hai detto(senza caratteri ,vuoto). Poi man mano infili carattere con setCharAt. |
0m4r |
code:
StringBuffer pippo=new StringBuffer();
String tst="ciao";
pippo.setLength(tst.length());
for(int i=0;i<pippo.length();
pippo.setCharAt(i,tst.charAt(i));/}
io farei la modifica che ho evidenziato, certo da fare con una stringa sola da ripiazzare in pipo è inutile ma se ci fossro pippo1 e pippo2 da concatenare sarebbe una cosa del tipo
code:
pippo.setLength((pippo1.length()+pippo2.length()));
il perchè mi sembra chiaro no? |
0m4r |
Originally posted by zeus
ehm.....
scusate, ma al di là del fatto che nessuno ci ha spiegato, mi pare, il metodo setCharAt e la classe StringBuffer [...]
Off-Topic: L'Università non ti deve inseganre tutto, ti deve mettere in condizione di potere fare tutto, che è diverso. Quindi non vedo dove è il problema. Evidente mente se vi hanno assegnato questo esercizio è perche siete in grado di poterlo fare, o almeno dovreste. E poi c'è sempre il dsy accompagnato da google!
Magari la prossima volta dai un okkiata anche a http://forum.java.sun.com |
BodomChild |
Originally posted by 0m4r
code:
StringBuffer pippo=new StringBuffer();
String tst="ciao";
pippo.setLength(tst.length());
for(int i=0;i<pippo.length();
pippo.setCharAt(i,tst.charAt(i));/}
io farei la modifica che ho evidenziato, certo da fare con una stringa sola da ripiazzare in pipo è inutile ma se ci fossro pippo1 e pippo2 da concatenare sarebbe una cosa del tipo
code:
pippo.setLength((pippo1.length()+pippo2.length()));
il perchè mi sembra chiaro no?
La mia intenzione non era risolvere l'esercizio se no avrei postato quello mio gia pronto.
Ho dato solo un piccolo punto di partenza per lo sviluppo dell'esercizio al silab.
sinceramente non passero' mai un codice completo. e' troppo umiliante per chi lo riceve:twisted: |
0m4r |
Originally posted by BodomChild
[...]sinceramente non passero' mai un codice completo. e' troppo umiliante per chi lo riceve:twisted:
se qualcuno si è sentito ofeso chiedo scusa.
Cmq a me pare di non avere fornito semplicemente il "codice completo" ma di averlo anche spiegato. Cioè, non è che ho detto fate cosi e non rompete le p@ll€. Ho anche cercato di motivare le mie scelte... |
zeus |
Grazie a tutti per le risposte,
mi scuso per aver creato una piccola disputa; non mi sono spiegato, il tono del mio primo post era relativamente scherzoso.
Non mi aspetto certo che mi spieghino tutto, nè che io possa comprendere qualsiasi cosa del corso, compreso il motivo per cui un professore decide di darmi o meno un esercizio da svolgere.
Cmq, le porzioni di codice che avete scritto sono molto utili e mi aiuteranno senz'altro a capire meglio stringbuffer e soprattutto setCharAt (che a mio parere rappresenta il punto meno chiaro).
Per quanto riguarda il sito della sun.... beh... personalmente lo aborro (e non aggiungo altro.... :shock: )
Mi scuso ancora per il primo post, non era chiaro l'intento e non l'ho reso tale.
Grazie per i suggerimenti
Byez
:ciao: |
zeus |
ehm.... sorry.....
a parte discorsi OT, ho provato il programma in una versione analoga alle vostre.
Non funziona.... mi dà errore "String Index out of range", qualsiasi valore dia all'indice del ciclo.
Ho provato a dare 0 e 1 con il ciclo in avanti, la lunghezza della stringa con il ciclo all'indietro... ho provato alcune modifiche, ma mi restituisce sempre lo stesso errore....
help? :uhmehehe:
thx |
0m4r |
forse sarebbe piu utile vedere il codice, almeno una porzione di codice... |
zeus |
yes....
String s, st;
StringBuffer str;
int lungs, lungst, lung;
video.println();
video.println("Inserisci due stringhe:");
video.println();
video.println();
video.println("Inserisci la prima stringa");
s = key.readLine();
lungs = s.length();
video.println();
video.println("Inserisci la seconda stringa");
st = key.readLine();
lungst = st.length();
video.println();
video.println();
lung = lungs + lungst;
str = new StringBuffer(lung);
for (int i = 0 ; i < lungs ; i++)
str.setCharAt(i, s.charAt(i));
// for (int i = lungs ; i < lungst ; i++)
// str.setCharAt(i, st.charAt(i));
video.println("Stringa concatenata: "+str);
il codice, ovviamente è temporaneo, ma mi dà già errore nel primo ciclo su charAt (il secondo non andrebbe cmq... va ovviamente cambiato)
thx :roll: |
zeus |
ho trovato l'errore.....
il costruttore di stringBuffer scritto in quel modo va in conflitto con charAt. Non ho idea del motivo, cmq adesso ho utilizzato il metodo setLength come avevi fatto tu e sembra funzionare.
Thx anyway
:) |
0m4r |
Originally posted by zeus
ho trovato l'errore.....
il costruttore di stringBuffer scritto in quel modo va in conflitto con charAt. Non ho idea del motivo, cmq adesso ho utilizzato il metodo setLength come avevi fatto tu e sembra funzionare.
Thx anyway
:)
il costruttore StringBuffer(int i ) ho notato anche io che non funziona come deve. Probabilmete è un bug, non redo proprio che sia un "conflitto" con charAt....
http://bugs.sun.com/bugdatabase/vie...?bug_id=4822952 |
BodomChild |
Idem ho avuto problemi anch'io nello scrivere il codice in quel modo.
Ho trovato molto comoda una situazione di questo tipo:
code:
String testo="Testo";
StringBuffer pippo= new StringBuffer();
for(int i=0;i<testo.length();i++){
pippo.setLength(i+1);
pippo.setCharAt(i,testo.charAt(i));
}
ossia setto la lunghezza di pippo ogni volta che gli aggiungo un carattere. |
0m4r |
scusa, ma tu la lunghezza di pippo la conosci a priori dato che le due stringhe da concatenare sono inserite dall'utente prima del processo di concatenamento... quindi forse ha più senso settare pippo direttamente alla lunghezza che ti interessa no? |
BodomChild |
Originally posted by 0m4r
scusa, ma tu la lunghezza di pippo la conosci a priori dato che le due stringhe da concatenare sono inserite dall'utente prima del processo di concatenamento... quindi forse ha più senso settare pippo direttamente alla lunghezza che ti interessa no?
Beh per l'esercizio che chiedeva di concatenare le 2 stringhe sicuramente.Ho trovato comodo,invece, l'utilizzo di qel codice con il conteggio e verifica d'esistenza delle parole nell'array,dell'esericzio successivo e utilizzando sempre la stessa variabile pippo che si riempiva e cancellava ad ogni verifica, cosi si e' reso dinamico tutto il procedimento. Se settavo la lunghezza della parola a priori, avevo un eccezione alla fine.
In ogni caso, c'e' sempre piu' di una soluzione ad ogni problema. Basta essere sempre consapevole dell'esito. |
0m4r |
Originally posted by BodomChild
Beh per l'esercizio che chiedeva di concatenare le 2 stringhe sicuramente.Ho trovato comodo,invece, l'utilizzo di qel codice con il conteggio e verifica d'esistenza delle parole nell'array,dell'esericzio successivo e utilizzando sempre la stessa variabile pippo che si riempiva e cancellava ad ogni verifica, cosi si e' reso dinamico tutto il procedimento. Se settavo la lunghezza della parola a priori, avevo un eccezione alla fine.
In ogni caso, c'e' sempre piu' di una soluzione ad ogni problema. Basta essere sempre consapevole dell'esito.
non ho capito che cosa hai fatto per l'esercizio successivo. Potresti spiegarti meglio, non per copiarti è, tanto io sti esercizio nanche li devo fare, è solo per curiosità.... |
BodomChild |
parlo dell'esercizio in cui tramite 2 array conti il numero di parole uguali nella stessa frase.
In pratica in poche parole riempio uno stringbuffer fin quando non trovo uno spazio o un punto o una virgola. Quando lo stringbuffer contiene la parola, vedo se esiste gia nell'array che contiene le parole. se esiste allora aggiungo +=1 all'array che tiene i contatori delle parole, se no aggiungo la parola nell'arayd delle parole. le posizioni dell'array tra parole e contatori sono uguali ad esempio: parole[3] contiene "ciao" contatore[3] conterra' il numero delle volte in cui "ciao" e' scritto nella frase.
Ovviamente lo stringbuffer e' uno e uno soltanto che finisce di riempirsi quando trova uno spazio o virgola o punto, e si svuota ogni volta che la parola esiste nell'array oppure viene aggiunta.
Spero di esser stato comprensibile.
notte notte |
nastanada |
wow i nuovi esercizi sono solo 2! un po' "stellari" ma sono 2! |
zeus |
ehm....
io ne vedo 3....
:? |
BodomChild |
Originally posted by zeus
ehm....
io ne vedo 3....
:?
Se clicchi sull'esercizio delle equazioni di secondo gradi c'e' scritto. Non fare questo esercizio. |
zeus |
sto diventando cieco....
Off-Topic: :pc: :saw:
:uhmehehe:
thx |
zeus |
Scusate se rompo ancora le p....
Ho avuto un casino di problemi con StringBuffer.... ho svolto l'esercizio della stringa da convertire ma non funziona... continua a darmi errore IndexOutofBounds....
Io lascio il codice, se qualcuno mi sa dire qual'è l'errore gli sarei grato.
--------------------------------------------------------------------------------
ConsoleOutputManager video = new ConsoleOutputManager();
ConsoleInputManager key = new ConsoleInputManager();
char c;
String st;
StringBuffer s = new StringBuffer();
int lust;
video.println();
video.print("Inserisci una stringa");
st = key.readLine();
lust = st.length();
s.setLength(lust);
video.println();
for (int i = 0; i <= lust; i ++) {
c = st.charAt(i);
if (Character.isLowerCase(c)) {
Character.toUpperCas(c);
s.setCharAt(i,c);
} else {
Character.toLowerCase(c);
s.setCharAt(i,c);
}
}
video.println("Stringa cambiata: "+s);
video.println();
-----------------------------------------------------------------------------------
Ho provato a togliere setLength ma l'errore, pur con messaggio lievemente differente, appare ugualmente.
Help... thx |
pinauz |
e come ci metterebbe l'università in condizione di studiare in questo caso scusa? Sul libro zero sui lucidi della webcen di malchiodi zero sulle api non si capisce un c**o....[MA L'UNIVERSITA' CI METTE IN CONDIZIONE DI STUDIARE] |
BodomChild |
X Zeus.
Gli errori che hai fatto sono solo 2.
Il primo hai messo i=0;i<=lust.
Ricordati che lui guarda il carattere dalla posizione zero e se gli metti minore "uguale" alla lunghezza della stringa eccede di un posto. devi mettere minore e basta.
Il secondo errore era dare a c il valore lowerCase o upperCase
ma salvandolo nella variabile c non solo sostituendo il valore di c.
Comunque correggi dove ti ho segnato in rosso.
Cancella l'uguale e aggiungi c= piu sotto
Spero di esserti stato d'aiuto
code:
ConsoleOutputManager video = new ConsoleOutputManager();
ConsoleInputManager key = new ConsoleInputManager();
char c;
String st;
StringBuffer s = new StringBuffer();
int lust;
video.println();
video.print("Inserisci una stringa");
st = key.readLine();
lust = st.length();
s.setLength(lust);
video.println();
for (int i = 0; i <= lust; i ++) {
c = st.charAt(i);
if (Character.isLowerCase(c)) {
c= Character.toUpperCase(c);
s.setCharAt(i,c);
} else {
c=Character.toLowerCase(c);
s.setCharAt(i,c);
}
}
video.println("Stringa cambiata: "+s);
video.println();
|
BodomChild |
Originally posted by pinauz
e come ci metterebbe l'università in condizione di studiare in questo caso scusa? Sul libro zero sui lucidi della webcen di malchiodi zero sulle api non si capisce un c**o....[MA L'UNIVERSITA' CI METTE IN CONDIZIONE DI STUDIARE]
A parer mio se uno ha voglia trova le soluzioni. non dar la colpa all'università o ai professori. Poi e' anche gratificante quando trovi da solo la soluzione no?.... |
zeus |
x bodom
grazie... il <= l'avevo trovato, l'altro purtroppo no... non me ne sono accorto in tempo, non ci sono arrivato.
anyway
thx
:ciao: |
zeus |
ehm... sempre per bodom
per caso hai guardato il nuovo esercizio? Intendo quello CorpoCeleste. Scusa il mio pessimismo, ma secondo te siamo in grado di farlo (noi comuni mortali...) un esercizio del genere?
In non mi sento molto in grado... ma l'eccezione è stata spiegata in lab?...
mumble... mumble.... :help:
ciao |
BodomChild |
Originally posted by zeus
ehm... sempre per bodom
per caso hai guardato il nuovo esercizio? Intendo quello CorpoCeleste. Scusa il mio pessimismo, ma secondo te siamo in grado di farlo (noi comuni mortali...) un esercizio del genere?
In non mi sento molto in grado... ma l'eccezione è stata spiegata in lab?...
mumble... mumble.... :help:
ciao
Guarda ci sto impazzendo dalle 14.00 di oggi pomeriggio, l'ho quasi completato ma ho dovuto imparare da solo come si creano e usano i costruttori e imparare anche come creare metodi di una classe inventata da te.
Le eccezioni le ha fatte giovedi' trovi i lucidi su webcen sotto il syllabus di Malchiodi. Comunque non sono granche' chiari.. sai come spiega lui no... ogni 2 per 3 si ferma.. guarda la platea attende quei 4 secondi di silenzio e rinizia a spiegare come se nulla fosse. A me da un fastidio boia il casino in aula.. ma quando fa la scenetta mi fa morire.
Comunque se hai bisogno per quell'esercizio ti posso dare delle dritte. ovviamente non tutte anche perche' credo fermamente che se ci son riuscito io a capirci qualcosa lo puoi fare benissimo anche tu. Poi ripeto io le vedo come sfide ste cose e quando ci riesci e' molto gratificante.
[edit]
Ok Completati entrambi
|
karplus |
Ma l'esercizio "corpo celeste" di quanti classi é composto? a me pare 2, ma il tutor via mail mi ha detto che sono 3, e quale sarebbe la terza? |
karplus |
forse ci sono, la famigerata terza classe sarebbe una classe che gestisce le eccezioni?
ma da quel che vedo sui lucidi non va dichiarata come con il solito class nomeprogramma { , giusto? |
BodomChild |
Originally posted by karplus
forse ci sono, la famigerata terza classe sarebbe una classe che gestisce le eccezioni?
ma da quel che vedo sui lucidi non va dichiarata come con il solito class nomeprogramma { , giusto?
Si la terza e' una classe che estende la classe Exception e va dichiarata cosi:
code:
class InvalidBlaBlaBla extends Exception{
public InvalidBlaBlaBla(){
}
}
Dove Exception e' la classe di eccezioni principale che poi tu estendi con la tua appena definita.
La richiami poi con throw quando ti serve, dichiarando una variabile apposita.
Ciao |
karplus |
Ok grazie!
ps che tutor acidi! |
BodomChild |
Originally posted by karplus
Ok grazie!
ps che tutor acidi!
Prego!
Spero di averci poco a che fare allora ^_^ |
pinauz |
ok la gratificazione ma allora se devo fare tutto da solo io in università che ci vado a fare? la cosa che non sopporto è che lo svolgimento degli esercizi viene spiegato al silab e sul testo non compare per chi non frequenta diventa tutto molto più difficile |
karplus |
beh, le spiegazioni sono chiare, cosa vuoi sapere di più? e cosa direbbero di più in laboratorio?
cmq uno puo' anche essere un genio e prendere 30 senza mai essere andato a lezione, anche se purtroppo non é il mio caso... :(
Poi io i programmi li ho sempre fatti a casa da solo e finora (tranne gli ultimi che devo ancora guardare) sono riuscito a farli tutti; prima dell'uni non avevo mai programmato quindi non sono neanche avvantaggiato. E come me molti altri.
|
zeus |
x bodom
Ciao,
devo chiederti tre cose:
1- Devo creare una nuova classe InvalidBlaBla che estende la classe generale Exception e richiamarla... E' l'unico modo per scrivere la struttura o potrebbe essercene un altro?
2- L'eccezione è poi eventualmente richiamata dal costruttore e quindi il richiamo va scritto all'interno del costruttore, o va scritto da un altra parte? E hai utilizzato catch o throw.... o entrambi? (che confusione che ho in testa.... :wall: si vede eh? :D)
3- (meno importante) Hai utilizzato 3 file separati per scrivere le classi?
Grazie, come sempre :lode:
ciao |
zeus |
Per dichiarare e inizializzare delle variabili, ed allo stesso tempo scrivere operazioni da svolgere, devo obbligatoriamente utilizzare il metodo main (), cioè public static void main ()?
Perchè nella classe CorpoCeleste il metodo main () non è richiesto esplicitamente, quindi se non fosse necessario, non lo utilizzerei.
Scusate, ma sono decisamente confuso... :shock:
Grazie
ciao |
K)M4STER |
Mi permetto di risponderti io, perchè stai facendo moooooolta confusione...
1- Devi per forza dichiarare una nuova classe se vuoi gestire una tua eccezione, ci sarebbero altri modi, ma non soddisfano le richieste quindi sì, fai come ti ha detto bodom...
2- Il costruttore serve quando dichiari una nuova classe per far capire cosa deve fare nel caso venga richiamata quella classe. Quindi devi utilizzare sia try...catch che throw (ma non nella classe dell'eccezione), infatti nel try inserisci quello che il programma deve fare nel caso non ci sia un'eccezione, se invece c'è un eccezione (nel nostro caso se massa o distanza sono < di 0) lanci tu l'eccezione con throw e di conseguenza la JVM riconosce un eccezione (dato che tu stesso hai esteso la classe InvalidBlabla con Exception) e quindi esce dal blocco try e finisce nel catch(InvalidBlaBla e)
3-Puoi fare tutto in un file solo, non ti serve fare tre file... L'importante è che non dichiari le classi public (altrimenti dovresti per forza creare 3 file diversi)
Dato che utilizzi un file solo può esserci solo un main() altrimenti la JVM non capisce da dove partire. L'unica classe che necessita di main è CentroControllo, dato che CorpoCeleste è solo una classe che serve per creare un nuovo Corpo Celeste, ma lo scopo del programma è quello di calcolare se un corpo celeste è anomalo o meno....
Spero di essere stato abbastanza chiaro.... |
BodomChild |
caro zeus allora vediamo un po...
1)
Tieni presente che la classe Exception e' UNA classe.
Qualunque classe puo' essere estesa ereditando i parametri della classe madre (tra l'altro e' stata la lezione di Mereghetti oggi) comunque vediamo piu a fondo:
Esiste la classe Exception con tutti i suoi parametri e il suo codice che ha un certo contratto. Nel senso che alla fine fa qualcosa di specifico.
Benissimo sappiamo che questa classe lancia eccezioni quando qualche evento la provoca. Ora tu dovrai estendere la classe Exception con una classe che inventi tu:
code:
class EccezioneZeus extends Exception{
public EccezioneZeus(){
}
}
Allora vediamo: Hai creato un eccezione che si chiama EccezioneZeus che ESTENDE la classe Exception.
Quindi la tua eccezione eredita tutto quel che fa la classe Exception a priori e poi aggiunge la tua classe con i vari metodi etcc... dentro la tua public EccezioneZeus().
----------------------------------------------------------
Fai una prova di lancio di eccezione.
nello stesso file prova a fare questa cosa:
code:
import prog.io.*;
class EccezioneZeus extends Exception{
public EccezioneZeus(){
}
}
/*come vedi metti piu classi nello stesso file source (ci pensa
poi il compilatore a fare diversi file .class*/
class LancioEccezione{
public static void main(String[] Args){
ConsoleInputManager in=new ConsoleInputManager();
ConsoleOutputManager out= new ConsoleOutputManager();
EccezioneZeus ouch=new EccezioneZeus();
/*se succede qualcosa in particolare che decidi TU!!
allora verra' lanciata -ouch- che a sua volta richiama la tua nuova
eccezione*/
int a,b; //hmm che so ste cose? ah si variabili intere ecco
a=in.readInt("Inserisci a: ");
b=in.readInt("inserisci b: ");
/*il codice di seguito puo' essere causa di eccezione
percio' lo mettiamo tra graffe try*
if(a<b){
try{
throw ouch;
}
catch(EccezioneZeus e){
out.println("E' stata provocata un eccezione di tipo "+e.toString());
out.println("ATTENZIONE A e' minore di B!!!!!!!");
}
}else{
out.print("Tutto regolare a e' maggiore di b!");
}
}
}
E' vero che avresti potuto fare il tutto senza blocco try. Ma questo e' solo un esempio. Tu calcola che le Eccezioni vengono provocate durante l'esecuzione dei programmi in alcune situazioni.. come ad esempio se tenti di mettere una variabile in un array in una posizione negativa viene provocata un eccezione. Quindi questo ti serve per poterle Gestire.
--------------------------------------------------------------------------
Il metodo main() va usato una volta sola, se no come dice giustamente KMASTER la JVM non sa piu' dove andare a pescare i pesci.
--------------------------------------------------------------------------
in un file source (*.java)
puoi specificare tutte le classi che ti servono basta che esse non siano public.
Mi spiego:
code:
class Pippo{
public Pippo(){
}
}
class FerdinandoSanFrancescoEtuttiGliApostoli{
public FerdinandoSanFrancescoEtuttiGliApostoli(){
}
}
class EccezioneAllaRegola extends Exception{
public EccezioneAllaRegola(){
}
}
class CorpoTurchese{
public CorpoTurchese(){
}
public static void main(String[] args){
}
}
e via dicendo..... quando compili il compilatore ti fa trovare tanti *.class quante classe hai creato.
Spero di esserti stato utile ed aver risposto almeno a qualcuna delle tue domande.
Ora ti saluto se hai altri dubbi non esitare..
Ciao ciao.
|
BodomChild |
Ho premuto 2 volte invia reply ^^.. ops |
Michæl |
C'è qualcosa che non mi quadra..
Perchè un punto del primo esercizio prevede la definizione di un costruttore?
Se non ricordo male, non abbiamo ancora affrontato questo argomento..
:? |
zeus |
grazie ad entrambi
:lode: per bodom
e...
Mi permetto di risponderti io, perchè stai facendo moooooolta confusione...
si..... già..... e vi ringrazio per avermi dato alcune valide spiegazioni, credo che però avrò ancora confusione fino a quando non finisco l'esercizio... perlomeno adesso ho alcuni ulteriori strumenti di comprensione.
Grazie a tutti e due |
BodomChild |
sfoglia il libro cerca su internet cerca sui lucidi delle lezioni vedraiche trovi tutto! ;) |
Just |
qualcuno mi pò aiutare!!!
ma la classe CorpoCeleste e CentroControllo devono stare nello stesso file??
l'eccezione dove deve stare??
HELP!!!!:? |
Just |
Scusate ma le due classi sono nello stesso file? io l'ho fatti in due file e l'eccezione la creo nel fatto nel file CorpoCeleste.java.
In CorpoCeleste.java non ci vuole il main? |
zeus |
Ti dico le uniche cose sicure che so...
Nella classe CorpoCeleste non serve il main e probabilmente non DEVE proprio esserci, in ogni caso non fai un metodo main ma quelli che sono stati chiesti.
Ci sono vari modi per scrivere più classi, ma il prof. mi ha consigliato di scrivere le classi in file java separati, quindi in questo caso 3, in quanto il compilatore, quando legge il file java CorpoCeleste cerca le altre classi (.class) e se non le trova cerca i .java corrispondenti e compila tutto in una volta.
Se scrivi diverse classi in un file unico, potrebbe presentare dei problemi, anche se a volte si può fare (o almeno così ho letto).
Come saprai, per sottoporre più file per un esercizio, fai uno zip dei .java.
Spero di averti aiutato.
Ciao :) |
BodomChild |
Originally posted by 0m4r
http://www.dsy.it/forum/showthread....&threadid=15736
Off-Topic: ma usare il search prima di postare no è?
Quello e' vero...
ma comunque Just le risposte alle tue domande sono tutte in questo thread.
nel mio esercizio e' la classe corpoceleste che contiene il main() |
Deathwing |
fondamentalmente, per me il problema è che non so nulla di fisica, non conosco le formule necessarie allo svolgimento dell'esercizio, non riesco a pensare una procedura adatta.
Questo al di là della sua possibile applicazione in Java.
Oltre a questo, che significa corpo celeste "anomalo" ? |
0m4r |
non leggere il problema dal punto di vista FISICO che non è sicuramente l'intento del docente di Inormatica Generale. Leggi le specifice e usa quelle come uncica informazione. Io credo che per lui il fatto di calcolare la forza gravitazionale come somma dei valori di input o come qualsiasi latra combinazione di questi ultimi sia del tutto indifferente. a lui non interessa il risultato finale in se, ma l'lagoritmo per raggiungerlo dove la formula per g è insignificante.
Il corpo anomalo è semplicemente un corpo in per cui la forza gravitazionale sia inferiore alla soglia che indichi.... |
Deathwing |
A questo punto non riesco a comprendere
cosa io effettivamente debba mostrare (ovvero: quale codice io debba mostrare) con l'esercizio.
(se come dici il risultato non conta) |
0m4r |
non è che il risultato non conta.... è che deve essere cmq giusto.
supponiamo che tu inserisci come massa 5 e distanza 10 e che calcoli la forza gravitazionale come (massa*distanza*2) - è una formula a caso, che come ti dicevo prima, dal mio punto di vista non è fondamentale - quindi per i dati inseriti la forza gravitazionale sarà 100.
Supponiamo che la soglia da te scelta sia di 50. Dato che 100>50, a seconda del fatto che il testo dell'esercizio ti dica che il corpo sia anomale o meno se fg>soglia o vice versa, il risulatato dovrà essere rispettivamente vero o falso...
spero di essere stato più chiaro.
Poi, sottolineo, che questo è il mio punto di vista e che se qualcuno, a ragione, mi voglia smentire.... ben venga! |
BodomChild |
Non ti chiede di risolvere un problema di fisica anche perche' nella richiesta e' ben specifico cosa fare.
forzag = rapporto tra la massa e il doppio della distanza
massa/distanza*distanza
il gioco e' fatto.. nulla di fisica..
in ogni caso non ti metteranno mai esercizi in cui mancano dati per completarli se no andrebbe contro ogni forma di algoritmo..nda |
K)M4STER |
Scusa, ma Deathwing l'hai letto almeno il testo dell'esercizio???
non conosco le formule necessarie allo svolgimento dell'esercizio
Sono quelle che ti ha detto Bodom e sono scritte nel testo...
cosa io effettivamente debba mostrare
C'è scritto pure quello, devi solo mostrare un centro di controllo per capire se un corpo celeste con massa e distanza inseriti dall'utente è anomalo o meno...
Oltre a questo, che significa corpo celeste "anomalo" ?
C'è scritto anche questo!!! |
0m4r |
Originally posted by K)M4STER
[...]
Off-Topic: evidentemente se ha fatto quelle domande non gli era chiaro il da farsi, non mi sembra che abbia ucciso nessuno per cui non vedo il motivo di una tua risposta cosi "acida" |
K)M4STER |
Ok, ok non avrà ucciso nessuno e la mia risposta sarà pure stata un po' acida, ma se hai letto il testo dell'esercizio ti renderai conto che deathwing non l'ha sicuramente fatto (dato che le risposte a tutte le sue domande erano contenute lì)
Comunque chiedo scusa se sono stato un po' troppo cattivo :twisted: :twisted: :twisted:
anche perchè non credo sia il luogo e tantomeno il caso di sollevare discussioni.
SORRY :sad: |
muffi3005 |
Ciao a tutti!
ovviamente anche io vi chiedo aiutoooo!!!
sto svolgendo l'esercizio CorpoCeleste bla bla...
ho un po' di dubbi... :?
1) quando dice "una serie di coppie di valori (massa, distanza)"
cioe' quanti... o meglio... faccio un ciclo finito con un numero di iterazioni fissato da me?
2) il valore di soglia definito come argomento del costruttore CentroControllo chi lo decide?
viene definito nel main e successivamente inizializzato dal costruttore?
in pratica in che momento verra' eseguita l'istruzione
new CentroControllo(100) ?
(se 100 e' un valore di soglia accettabile.. :D )
scusate se sono stata un po' confusionaria! :shock:
Silvia |
BodomChild |
Originally posted by muffi3005
Ciao a tutti!
ovviamente anche io vi chiedo aiutoooo!!!
sto svolgendo l'esercizio CorpoCeleste bla bla...
ho un po' di dubbi... :?
1) quando dice "una serie di coppie di valori (massa, distanza)"
cioe' quanti... o meglio... faccio un ciclo finito con un numero di iterazioni fissato da me?
2) il valore di soglia definito come argomento del costruttore CentroControllo chi lo decide?
viene definito nel main e successivamente inizializzato dal costruttore?
in pratica in che momento verra' eseguita l'istruzione
new CentroControllo(100) ?
(se 100 e' un valore di soglia accettabile.. :D )
scusate se sono stata un po' confusionaria! :shock:
Silvia
Allora allora vediamo un po....
1-) puoi benissimo fare un ciclo infinito while(true)
2-)nel mio esercizio ho creato una variabile d'istanza soglia con valore 20... e' puramente casuale il valore puoi passarlo dal main oppure istanziare il valore direttamente nel costruttore.
scusate se sono stata un po' confusionaria! :shock:
Confusionaria??? rileggiti tutto il post..... ci sono state domande molto piu "confusionarie"
Ciao ciao |
muffi3005 |
Grazie!!!
ma...
1) un ciclo infinito non mi garba molto ... no? :-D
...non so... che senso ha un ciclo infinito?!
per la "complessita'" dell'esercizio ... poteva benissimo mettere una condizione in piu' ...
va be' .. faro ' un ciclo infinito anche perche' non sembra dia delle alternative
2) non credo si debba istanziarla nel costruttore, secondo me
va fatto dal main... xe' altrimenti non avrebbe senso l'argomento
del costruttore...
ma poi in generale questo esercizio che senso ha?!?
:D :D |
0m4r |
ha il senso di fare pratica con metodi, classi, costruttori e di farvi "prendere" la mano con Java |
muffi3005 |
si ok! ... ero ironica... per carita' so benissimo che i docenti sono li' per insegnare e per inculcarci nella zucca i concetti. Lavoro come loro e ho rispetto per questo.
Il discorso era un altro, intendevo esprimere il concetto che se l'intento e' quello di far prendere confidenza con il linguaggio... dovrebbe essere chiaro il senso del legame che c'e` tra le varie classi e del perche' di alcune richieste.
per imparare devo anche sapere perche' mi sto muovendo in un certo modo, tutto deve avere un senso... secondo me.
Secondo me questo esercizio e' abbastanza fuorviante per la comprensione... alcune cose sono dubbie o cmq non necessarie. |
0m4r |
premetto che non sono un insegnate, ma se ci dici quali sono i dubbi e le cose fuorvianti forse potremmo chiarirli insieme no? |
muffi3005 |
certo! (e grazie del supporto morale...) :-D
Ti prego di non prendere tutto quello che dico come "la verita' assoluta", tutto quello che esprimo e' pura opinione personale!
tanti anzi forse tutti la potranno pensare diversamente ... io... sono un po' strana... :oops:
Per me l'aspetto fuorviante e' il tema stesso dell'esercizio, perche' creare il dubbio di come calcolare la forza gravitazionale? "espressa in multipli della massa terrestre moltiplicata per la costante di gravitazione universale" ...meno male che subito dopo c'e` la delucidazione.. pero' ho visto che alcuni si sono posti il dubbio... insomma, sulle prime anche io!
ma poi ho pensato che l'esame e' di informatica non di fisica.
quidni mi sono attenuta alla formula massa/distanza*distanza
senza chiedermi nient'altro.
I dubbi invece sono:
1) la variabile "soglia" non e' chiaro dove deve essere difinita. Credo sia importante in un algoritmo chi decide cosa... tutto deve essere chiaro e niente deve essere lasciato al dubbio.
In questo caso faccio da me? decido io quanto vale e come fare per darle un valore?
2) il ciclo con un numero di iterazioni indefinite... anche in questo caso decido io?
c'e` una segnalazione in fondo al testo dell'esercizio:
"Attenzione: non è richiesto di gestire in modo particolare la terminazione della sequenza di input. Teoricamente il programma può continuare indefinitamente la sua esecuzione"
....vuol dire ciclo infinito?
...non sono dubbi enormi, li risolvo subito facendo da me! pero' mi chiedo perche' il testo non sia piu' chiaro...
Cmq tutto il resto l'ho fatto............. speriamo sia giusto!!!!! ;) |
muffi3005 |
Certo che rileggendo il mio ultimo messaggio mi rendo conto di essere veramente logorroica!!! :?
E va be` sara' perche' dormo poco! :D :D :D
Scusate del messaggio inutile di prima!
Lasciamo perdere va i miei dubbi esistenziali sul perche' l'esercizio e' cosi' ...
chi se ne frega! ... l'esercizio e' questo e basta senza troppe domande.... ;)
Adesso mi godo le vacanze!!
BUON NATALE a tutti !!!!!!
Silvia |
zeus |
Ragazzi, scusate, sono ancora in grande difficoltà con l'esercizio corpo celeste.
Non mi compila la classa CentroControllo e non capisco cosa cambiare.
E' un'ora che continuo a scrivere e cambiare il codice... sigh.
Non funziona.
Qualche buon'anima mi può aiutare, se gli mando i file via mail o in pvt?
Altrimentri non ne esco più... :shock:
scusate per il post un pò strano, ma sono veramente al limite delle mie capacità pisco/fisiche....
:uhmehehe:
grazie
ciao |
K)M4STER |
Beh Silvia, hai assolutamente ragione a porti certe domande, credo che ce le siamo posti tutti di fronte a sto esercizio, ma ti sei risposta da sola:
Lasciamo perdere va i miei dubbi esistenziali sul perche' l'esercizio e' cosi' ... chi se ne frega!
:D :D :D
zeus, anche se non mi sembra il modo migliore x imparare, se davvero stai scoppiando, prova a mandarmi un pm, vedo se riesco a darti una spiegazione del perchè non ti funziona, senza xo' imboccarti la soluzione!!! |
zeus |
si... ti mando un pm.
Anch'io non amo essere imboccato, ma sto scoppiando
come dici tu... e soprattutto per motivi che si aggiungono a quelli scolastici.
Al di là di questo, il problema è dettato dal fatto che domani c'è la consegna e già una volta sono rimasto fregato per il tempo.
Non vorrei che si ripetesse.
Ti mando il pm, grazie.
:shock: |
|
|
|
|