PDA

View Full Version : Domanda Java


Tioz90
14-01-2012, 10:36
Qualche problema a compilare il codice..non sono sicuro se non mi trova le classi del package o se ho sbagliato io a scrivere..

import prog.io.*;

class calcolatrice {

public static void main (String [] args) {

ConsoleInputManager in=new ConsoleInputManager();
ConsoleOutputManager out=new ConsoleOutputManager();

boolean ricomincia=true;

do {

boolean riprovare=true;
do {
char operazione=in.readChar("Che operazione vuoi eseguire?"); //lettura del tipo di operazione
if (operazione!='+'||operazione!='-'||operazione!='/'||operazione!='*') {
out.println("Inserire un'operazione valida");
riprovare=in.readSiNo("Vuoi riprovare? s/n");
}
else
riprovare=false;
}
while (riprovare);

Sequenza<int> operandi=new Sequenza<int>();

boolean continua=true;
for (int i=0;continua;i++) { //lettura e salvataggio degli operandi
operandi.add(in.readInt("Inserisci l`operando"));
continua=in.readSiNo("Vuoi inserire altri operandi? s/n");
}

if (operandi.size()<2) { //controllo che ci siano più di due operandi

switch (operazione) { //blocco che esegue le operazioni
case '+':
int somma=0;
for (int i:operandi) {
somma+=i;
}
out.println("Il risultato della somma é: "+somma);
break;
case '-':
int sottrazione=operandi(0);
for (int i:operandi) {
sottrazione-=i;
}
out.println("Il risultato della sottrazione é: "+sottrazione);
break;
case '/':
int divisione=operandi(0);
for (int i:operandi) {
divisione/=i;
}
out.println("Il risultato della divisione é: "+divisione);
break;
case '*':
int moltiplicazione=operandi(0);
for (int i:operandi) {
moltiplicazione*=i;
}
out.println("Il risultato della moltiplicazione é: "+moltiplicazione);
break;
}

ricomincia=in.readSiNo("Vuoi eseguire un'altra operazione? s/n");

}

else
out.println("Non posso eseguire operazioni su un solo operando");

}

while (ricomincia);

}

}


Quando provo a compilare:

calcolatrice.java:26: error: cannot find symbol
Sequenza<int> operandi=new Sequenza<int>();
^
symbol: class Sequenza
location: class calcolatrice
calcolatrice.java:26: error: unexpected type
Sequenza<int> operandi=new Sequenza<int>();
^
required: reference
found: int
calcolatrice.java:26: error: cannot find symbol
Sequenza<int> operandi=new Sequenza<int>();
^
symbol: class Sequenza
location: class calcolatrice
calcolatrice.java:26: error: unexpected type
Sequenza<int> operandi=new Sequenza<int>();
^
required: reference
found: int
calcolatrice.java:36: error: cannot find symbol
switch (operazione) { //blocco che esegue le ope
razioni
^
symbol: variable operazione
location: class calcolatrice
calcolatrice.java:45: error: cannot find symbol
int sottrazione=operandi(0);
^
symbol: method operandi(int)
location: class calcolatrice
calcolatrice.java:52: error: cannot find symbol
int divisione=operandi(0);
^
symbol: method operandi(int)
location: class calcolatrice
calcolatrice.java:59: error: cannot find symbol
int moltiplicazione=operandi(0);

^
symbol: method operandi(int)
location: class calcolatrice
8 errors


Mi sembra evidente che l'errore si sia propagato dal fatto che non trova la classe..a richiesta fornisco la documentazioni del package;)

So che è una domanda un pò (tanto) balorda ma se qualche buona anima volesse darmi una mano ne sarei grato :)

Idee per migliorare la struttura del programmino?:fagiano:

ndakota
14-01-2012, 11:48
Hai importato il package, bene. Però non è parte della libreria standard. Non hai il jar a cui fa riferimento quel package. Glielo specifichi in compilazione?

http://pighizzini.dico.unimi.it/jb/librerie/prog-3ed.jar

Qui trovi il jar per esempio. Devi usarlo durante la compilazione.

Tioz90
14-01-2012, 16:14
Hai importato il package, bene. Però non è parte della libreria standard. Non hai il jar a cui fa riferimento quel package. Glielo specifichi in compilazione?

http://pighizzini.dico.unimi.it/jb/librerie/prog-3ed.jar

Qui trovi il jar per esempio. Devi usarlo durante la compilazione.
Si, di solito lo importa senza problemi..per questo avevo il dubbio di aver sbagliato qualcosa io

Edit: tra l'altro mi sono appena reso conto rileggendo che il primo if non funziona, così..potrei farlo con degli && al posto degli ||?

ndakota
14-01-2012, 17:58
Infatti per come l'hai scritto ci vanno gli &. Ma risolti i problemi che non ti trova le classi?

Tioz90
16-01-2012, 09:36
Infatti per come l'hai scritto ci vanno gli &. Ma risolti i problemi che non ti trova le classi?

No..ho pensato che magari stavo importando le classi sbagliate in quanto avevo scritto prog.io.* quindi ho provato ad importarle tutte con prog.* ma è uguale..come si fa a punta direttamente ad un packagemaker in compilazione?

ndakota
16-01-2012, 09:39
No..ho pensato che magari stavo importando le classi sbagliate in quanto avevo scritto prog.io.* quindi ho provato ad importarle tutte con prog.* ma è uguale..come si fa a punta direttamente ad un packagemaker in compilazione?

Sopra ti ho messo il jar. Devi usarlo in compilazione! Come compili? Immagino da terminale se stai seguendo il tuo primo esame di Programmazione.

Adesso mi sfugge la sintassi. Potrebbe essere qualcosa del genere


javac Prova.java prog-3ed.jar

Tioz90
16-01-2012, 15:40
Sopra ti ho messo il jar. Devi usarlo in compilazione! Come compili? Immagino da terminale se stai seguendo il tuo primo esame di Programmazione.

Adesso mi sfugge la sintassi. Potrebbe essere qualcosa del genere


javac Prova.java prog-3ed.jar


Si, compilo da terminale.. Ma il classpath punta al package correttamente

L'errore é dato dal fatto che non trova la classe giusto? O potrebbe essere altro?

ndakota
16-01-2012, 18:06
Devi aver fatto queste cose:
1) Jar nel classpath o comunque specificarlo compilando
2) Importato le classi che devi usare

Se hai fatto queste due cose non può non funzionare.

Rsk
16-01-2012, 19:35
occhio che i generics in java non si possono usare con i tipi primitivi come int