java.lang.NoSuchMethodError: main

Hey,

hab heute mit Java angefangen und die SuFu hat mich auch nicht schlauer gemacht. Hier mein Problem:

Java:
import java.util.Scanner;


public class primzahl_bibo {

	public static boolean isPrime(int n) {
		Scanner sc = new Scanner(System.in);
		System.out.print("Primzahl? Gib die zu prüfende Zahl ein:");
		n = sc.nextInt();
		int c=0;
		for (int i=1; i<=n; i++){ //Zaehlmechanismus bis zur eingegebenen Zahl
			int r=n%i; //gibt den Rest der eingegebenen Zahl/i an, r entspricht dem Rest
			if (r==0)
				c=c+1; //wenn der Rest==0 zählt der Counter um die "if(c==2)"-Bedingung zu erfuellen oder eben nicht
		}
		if (c==2) //Primzahl, wenn genau zwei mal ohne Rest
			return true;
		else
			return false;
	}
}

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

Ich weiß das iwie die "main" fehlt aber kann er nicht einfach "public static boolean isPrime(int n) {" als main nehmen?
 
nein, kann er nicht, weil main die einsprungsmethode ist 🙂

du hast dir die antwort doch selbst gegeben, bau eine main ein und ruf deine methode auf! 🙂
 
> Ich weiß das iwie die "main" fehlt aber kann er nicht einfach "public static boolean isPrime(int n) {" als main nehmen?


kann er nicht einfach 'hier komm primzahl_bibo' als Klasse nehmen, muss es 'public class primzahl_bibo {' sein?
-> nein, ja

zu deiner Frage
-> nein
 
Die Main kann über so wie auch unter deiner Methode stehen.

EDIT: Zum Kopieren.

Java:
public static void main(String[] args)
{
isPrime(5);
}
 
Super das klappt 🙂 mir ist nur nicht ganz klar "isPrime(5)" steht die 5 für die Zeile?

Und etwas offtopic aber wisst ihr warum er mir nicht "return true;" oder "false" anzeigt?
 
Super das klappt mir ist nur nicht ganz klar "isPrime(5)" steht die 5 für die Zeile?
5 ist der Übergabewert an die Methode, also die zu testende Zahl.

Und etwas offtopic aber wisst ihr warum er mir nicht "return true;" oder "false" anzeigt?
Weil du es nirgends ausgibst.
Code:
System.out.println(isPrime(5));
 
Zwei von deinem Programm unabhängige, aber grundsätzlich zu beachtende Dinge:

1) Klassen-Namen schreibt man im CapitalCamelCase. Also nicht "primzahl_bibo", sondern "PrimzahlBibo". Ist kein Fehler für den Compiler, aber ein Fehler gemäß der Namenskonventionen

2) Nach einem if(...) bitte immer die {}-Klammern verwenden. Selbst dann, wenn nur eine einzige Zeile folgt. Das ist - vorallem für Anfänger - extrem fehleranfällig, da nicht unbedingt klar ist, was zum if-Statement dazugehört, und was nicht. Bsp:

Java:
boolean b = true;
if(b)
    System.out.println("b ist true");
    System.out.println("b ist noch immer true :)");

Führ diesen Code mal aus für b = true und b = false.
 
😀 danke werds mir merken. Leider läuft das ganze immer noch nicht. Letzte Frage für heute (sitz seit 4 Stunden an dem Teil :autsch: )

Java:
if (c==2){ 
	return true;
else
	return false;
}

das "else" geht jetzt nicht mehr warum auch immer. Ebend gings noch aber als ich..

Java:
if (c==2){ 
	return true;
             System.out.println(isPrime(5));
else
..

mit reingenommen hab gings nicht mehr .. ???:L
 
der Code nach dem return kann nicht ausgeführt werden, da hier die Methode endet.

😉 Der Compiler zeigt aber auch Fehlermeldungen an. Hier vermutlich unreachable code?
 
Yeah es hat geklappt danke euch allen 😀😀😀

Java:
		if (c==2){ 
			System.out.println(true);
			return true;
		}else
			System.out.println(false);
			return false;

so hats funktioniert 🙂
 

Neue Themen


Zurück
Oben