Problema con if-else

di il
8 risposte

Problema con if-else

Buonasera a tutti
sto studiando fondamenti di informatica in java all'università (usiamo esclusivamente Textpad come editor), ma ho dei problemi con alcuni concetti. Nelle le dispense inerenti le istruzioni di controllo viene messo come esempio delle cascate di if-else un metodo:
public static void divisibilePer235(int n){
		if (n%2==0){
			System.out.println("Num. pari");
			System.out.println("Quoziente "+n+"/2: "+n/2);
		}
		else
			if (n%3==0){
				System.out.println("Num. dispari divis. per 3");
				System.out.println("Quoziente "+n+"/3: "+n/3);
			}
			else
				if (n%5==0){
					System.out.println("Num. dispari divis. per 5 ma non per 3");
					System.out.println("Quoziente "+n+"/5: "+n/5);
				}
				else
					System.out.println("num. dispari non divis. per 3 o per 5");
}
tuttavia se compilato restituisce l'errore "class, interface, or enum expected" in 8 punti diversi.
Ho provato allora a sistemarlo aggiungendo:
import fond.io.*;
public class divisibilePer235{
(laddove il fond.io viene fornito specificamente per il corso di informatica dal professore) e attualmente compila, ma se eseguito riporta in una finestra di sistema l'errore "il metodo principale non è stato trovato nella classe divisibilePer235. Definire il metodo principale come: public static void main(String[] args) altrimenti una classe applicazione JavaFX deve estendere javafx.application.Application".
Anche realizzando un software di test
import fond.io.*;

public class TestDivisibilePer235Prova{
	public static void divisibilePer235(int n){
		InputWindow in = new InputWindow();
		String str = in.readString();
	}
}
Textpad mi restituisce lo stesso errore all'esecuzione.
Ho controllato molte volte il testo originale nel caso avessi fatto qualche errore a riportarlo, ma è identico a ciò che sta scritto sulle dispense. Ho anche provato a chiedere ai miei colleghi di corso (non ho potuto chiederlo al professore perchè sono fuori sede), ma neanche loro hanno saputo aiutarmi. Qualcuno di voi potrebbe per cortesia spiegarmi cosa dovrei fare per risolvere l'errore e perchè sulle dispense viene scritto in un modo che neanche compila ? Grazie mille e scusatemi per aver scritto così tanto...

8 Risposte

  • Re: Problema con if-else

    Ciao, un'applicazione Java ha necessità di trovare un "punto di ingresso" dal quale iniziare ad eseguire il codice. Tale punto di ingresso è proprio il metodo main, definito come ti dice il compilatore. Se manca quello, allora non funzionerà nulla.
  • Re: Problema con if-else

    minomic ha scritto:


    Ciao, un'applicazione Java ha necessità di trovare un "punto di ingresso" dal quale iniziare ad eseguire il codice. Tale punto di ingresso è proprio il metodo main, definito come ti dice il compilatore. Se manca quello, allora non funzionerà nulla.
    Grazie della risposta
    quello che non mi spiego però è perchè sia sul libro che sulle dispense viene scritto così... anche perchè quel "divisibilePer235" viene scritto esattamente al posto del main... ad ogni modo, per risolverlo, cosa devo fare ? Perchè se scrivo "main(String[] args)" la scritta che c'era prima, "divisibilePer235(int n)", da qualche parte dovrò metterla, no ? E poi quando creo un test per quel metodo, come faccio a far capire a java che mi sto riferendo a quello ?
  • Re: Problema con if-else

    Dalle tue domande, credo che tu abbia un po' di confusione sulla struttura di un'applicazione Java. Quindi il consiglio è quello di ripassare!

    Ecco un possibile esempio funzionante:
    
    
    public class Test235 {
    
    	public static void divisibilePer235(int n){
    		if (n%2==0){
    			System.out.println("Num. pari");
    			System.out.println("Quoziente "+n+"/2: "+n/2);
    		}
    		else
    			if (n%3==0){
    				System.out.println("Num. dispari divis. per 3");
    				System.out.println("Quoziente "+n+"/3: "+n/3);
    			}
    			else
    				if (n%5==0){
    					System.out.println("Num. dispari divis. per 5 ma non per 3");
    					System.out.println("Quoziente "+n+"/5: "+n/5);
    				}
    				else
    					System.out.println("num. dispari non divis. per 3 o per 5");
    	}
    
    
    	public static void main(String[] args) {
    		System.out.println("Provo con 25");
    		Test235.divisibilePer235(25);
    		System.out.println();
    		System.out.println("Provo con 23");
    		Test235.divisibilePer235(23);
    	}
    
    }
    
    Il main ci deve comunque essere. Poi all'interno del main puoi richiamare l'altro metodo, come in questo caso.
  • Re: Problema con if-else

    minomic ha scritto:


    Dalle tue domande, credo che tu abbia un po' di confusione sulla struttura di un'applicazione Java. Quindi il consiglio è quello di ripassare!

    Ecco un possibile esempio funzionante:
    
    
    public class Test235 {
    
    	public static void divisibilePer235(int n){
    		if (n%2==0){
    			System.out.println("Num. pari");
    			System.out.println("Quoziente "+n+"/2: "+n/2);
    		}
    		else
    			if (n%3==0){
    				System.out.println("Num. dispari divis. per 3");
    				System.out.println("Quoziente "+n+"/3: "+n/3);
    			}
    			else
    				if (n%5==0){
    					System.out.println("Num. dispari divis. per 5 ma non per 3");
    					System.out.println("Quoziente "+n+"/5: "+n/5);
    				}
    				else
    					System.out.println("num. dispari non divis. per 3 o per 5");
    	}
    
    
    	public static void main(String[] args) {
    		System.out.println("Provo con 25");
    		Test235.divisibilePer235(25);
    		System.out.println();
    		System.out.println("Provo con 23");
    		Test235.divisibilePer235(23);
    	}
    
    }
    
    Il main ci deve comunque essere. Poi all'interno del main puoi richiamare l'altro metodo, come in questo caso.
    Grazie mille, ora è più chiaro
    comunque la confusione nella mia testa c'è ed è tanta, hai ragione
    esiste qualche sistema di ricompense o punti da assegnare su questo forum o è sufficiente un grazie
  • Re: Problema con if-else

    studenteingegneria ha scritto:


    esiste qualche sistema di ricompense o punti da assegnare su questo forum o è sufficiente un grazie
    No no, un grazie è più che sufficiente!

  • Re: Problema con if-else

    minomic ha scritto:


    studenteingegneria ha scritto:


    esiste qualche sistema di ricompense o punti da assegnare su questo forum o è sufficiente un grazie
    No no, un grazie è più che sufficiente!

    Grazie mille allora
  • Re: Problema con if-else

    Esistono compilatori come BlueJ che simulano i metodi come se ci fosse un metodo main. Volendo potresti usare quello
  • Re: Problema con if-else

    Daniele92 ha scritto:


    Esistono compilatori come BlueJ che simulano i metodi come se ci fosse un metodo main. Volendo potresti usare quello
    No, per l'esame possiamo usare solo TextPad...
Devi accedere o registrarti per scrivere nel forum
8 risposte