PDA

Visualizza la versione completa : [java] Erorre banale..


alex86
16-10-2003, 17:46
class Pari
{

public static void main(String[] args)
{
int Cont=0;
int Start=args[0];
Start++;
int End=args[1];

for(int i=Start; i<End; i++)
if(Start%2==0)
Cont++;

System.out.println("Tra "+args[0]+" e "+args[1]+" vi sono "+Cont+" numeri pari");
}
}

m sapreste trovare l'errore (nelle righe 7 e 9)

io penso ke sia un errore di conversione di una stringa in un intero...ma se è così come convertirla?
Il programma calcola quanti numeri pari vi sono tra i numeri args[0] e args[1]..

pireda
16-10-2003, 17:50
Beh...

public static void main(String[] args)
{
int Cont=0;
int Start=args[0];
Start++;
int End=args[1];

...incompatibilità tra tipi :eek:

alex86
16-10-2003, 17:52
si..infatti qst ero riuscito a capirlo..

ma come posso fare? :D

alex86
16-10-2003, 17:53
sì..ho risolto...

anzi di String[] args

ho usato

int[] args..


scusate ma sto imparando da poco java e alla programmazione ad oggetti nn sono proprio abituato.. :D

alex86
16-10-2003, 17:58
ok..lo compila ma cm mai m dà qst errore??


Exception in thread "main" java.lang.NoSuchMethodError: main


il sorgente è qst

class Pari
{

public static void main(int[] args)
{
int Cont=0;
int Start=args[0];
Start++;
int End=args[1];

for(int i=Start; i<End; i++)
if(Start%2==0)
Cont++;

System.out.println("Tra "+args[0]+" e "+args[1]+" vi sono "+Cont+" numeri pari");
}
}

pireda
16-10-2003, 18:04
class Pari
{

public static void main(int[] args)
{
int Cont=0;
int Start=args[0];
Start++;
int End=args[1];

for(int i=Start; i<End; i++)
{
if(Start%2==0)
Cont++;
}

System.out.println("Tra "+args[0]+" e "+args[1]+" vi sono "+Cont+" numeri pari");
}
}

Ho aggiunto le parentesi al for ma non sono sicuro che il problema è questo

ChReAn
16-10-2003, 18:12
Puoi usare Int al posto di int.
Alcuni tipi di dati di base hanno dei wrapper (Float per i float, Double per i double, ecc...) che consentono di agevolare le conversioni.
Ad esempio tu potresti scrivere



Integer Start = new Integer(args[0]);


Questi tipi di dati infatti possiedono dei costruttori che si occupano di castare in automatico il parametro passato.
Per ottenere poi il valore della variabile, bastera' richiamare Start.intValue().

ChReAn
16-10-2003, 18:14
Azz!!!
Ci sono altri due ORRORI!

1) Non puoi definire un main (int[]), perche' i parametri del main sono sempre stringhe!!!
2) Il primo parametro del main, quindi args[0], e' il nome dell'eseguibile stesso, che per forza di cose non puo' essere un numero!!! I parametri a tua disposizione sono quelli da 1 in poi!!!

anx721
16-10-2003, 20:39
Originariamente inviato da ChReAn
Azz!!!
Il primo parametro del main, quindi args[0], e' il nome dell'eseguibile stesso, che per forza di cose non puo' essere un numero!!! I parametri a tua disposizione sono quelli da 1 in poi!!!

Questo vale in c, in java args[0] non è inizializzato con il nome del programma, quindi i parametri passati dalla linea di comando iniziano ad essere inseriti a partire dall'indice zero, ciao.

anx721
16-10-2003, 20:46
Originariamente inviato da ChReAn
Azz!!!
Il primo parametro del main, quindi args[0], e' il nome dell'eseguibile stesso, che per forza di cose non puo' essere un numero!!! I parametri a tua disposizione sono quelli da 1 in poi!!!

Questo vale in c, in java args[0] non è inizializzato con il nome del programma, quindi i parametri passati dalla linea di comando iniziano ad essere inseriti a partire dall'indice zero, ciao.

Loading