methoden problem

DevEye

Erfahrenes Mitglied
Wenn ich eine Klasse geschrieben, und wenn ich innernalb dieser eine Mathode aufrufe
z.B. wie bei dem unterm kleinen .java File meldet mein compiler immer
Syntax error on token "void" (bzw. bierbei "float"), new expected
Woran liegt das... hab neu mit JAVA angefangen...

Code:
 public class Weitsprung {

	
	public static void main(String[] args) {
		
		float [][] w = new float [800][12];
		
		for (int p = 0; p < w.length; p++)
		{
			for (int n = 0; n < w[0].length; n++)
			{
				w[p][n] = sprung ();
			}
		}
		
		float sprung ()
		{ float Weite = (1+Math.randon()*4);
		  return Weite;
		}
	}
}
 
Hey,
Du hast die Methode innerhalb der Methode "public static void main()" geschrieben! Schreib sie außerhalb und es sollte keine probleme geben :)
mfg,
Tsa
 
Danke, für die Antwort, aber das war jetzt ein Beispiel, habs gemerkt, muß es analog mal bei dem richtigen Programm probieren, falls es noch ein Problem geben wird poste ich es nochmal!

THX
 
Selbst wenn du deine Methode (wie richtig gesagt von Tsa) ausserhalb der main Methode schreibst wird es immer noch nicht klappen es sein den du schreibst noch ein static davor, oder du bildest mit new eine Instanz von deiner Klasse.....
Am besten mal in dem Openbook Java ist auch eine Insel etwas über die Grundlagen von Java nachlesen
mfg
elmato
 
Hier ist das Problemprogramm:

Code:
public class RotateSquare {

	
	
	public static void main(String[] args) {
		int Anzahl,Schritte; String Richtung;
		
		int [] a;
		//Anzahl der Rechtecke
		System.out.println("Bitte geben sie die Anzahl an Rechtecken an: ");
		Anzahl = Eingabe();
		a = new int [Anzahl];
		System.out.println("----------------------------------------------");
		
		//Erstellt Rechtecke und liest Strickstärken ein
		for (int anzR = 1; anzR <= Anzahl; anzR++)
		{
			a[anzR] = new Rechteck (); 
			System.out.println("Gebensie die Strichstärke ein:");
			a[anzR].Strichstaerke = Eingabe ();
		}
		
		//Eingabe der Rotation
		System.out.println("----------------------------------------------");
		System.out.println("Geben sie Richtung und nachfolgend die Anzahl der Rotation an:");
		Richtung = Eingabe2(); Schritte = Eingabe();
		
		//Rotation ausführen
		rotiere(a, Schritte, Richtung);
	}
	
	
	//Objekt Rechteck
	public class Rechteck
		{int Strichstaerke;}
		
	//Methode rotiere
	public static void rotiere (int [] a, int Schritte, String Richtung)
		{
			b = new Rechteck (); b=null;	
		
			if (Richtung.equals("links"))
			{	
				for (int schrittNr = 0; schrittNr <= Schritte; schrittNr++)
				{
					b=a[0];
					for (int i = 1; i<a.length; i++)
					{
						a[i]=a[i-1];
					}
					a[a.length-1]=b;
				}
			}
			else if (Richtung.equals("rechts"))
			{
				for (int schrittNr = 0; schrittNr <= Schritte; schrittNr++)
				{
					b=a[a.length];
					for (int i = a.length-1; i<= 0; i--)
					{
						a[i]=a[i+1];
					}
					a[0]=b;
				}
			}
			else System.out.println("Überprüfen sie ihre Eingabe!");
		}
		
	//Eingabe von Zahlen
	static int Eingabe()
	{
		String s = "";
		try
		{
			s = new java.io.DataInputStream(System.in).readLine();
		}
		catch (java.io.IOException e) { }
		return java.lang.Integer.parseInt(s);
	}
	
	//Eingabe von Strings
	static String Eingabe2()
	{
		String s = "";
		try
		{
			s = new java.io.DataInputStream(System.in).readLine();
		}
		catch (java.io.IOException e) { }
		return s;
	}

}

Also falls jemand helfen kann.. das obere war ein Beispiel..
und die Fehler dort lagen
1) dass Methode da im main war
2) keine Variablen Typ Zuweisung der Parameter
3) static vor float

...

Aber hier weiß ich nicht, wo ich den Bock geschossen habe..
 
Hmm, was soll man zu diesem Code sagen? Gruselig? Versteh mich bitte nicht falsch, man muss keinen 1a Code schreiben können(klappt bei mir auch nicht immer ;) ) aber an deinem Code sieht man doch eindeutig, das dir noch sehr viele Java Grundlagen nicht wirklich bewusst sind, folge doch mal meinem Vorschlag und lies dir besagtes Javabuch durch

Java ist auch eine Insel:
http://www.galileocomputing.de/openbook/javainsel4/

Handbuch der Java-Programmierung
http://www.javabuch.de/download.html
(gibt's auch online)

denn an deinem obrigen Code muss man nichts verbessern sondern ihn komplett neu schreiben, sorry...
Lass dich nicht entmutigen, eigne dir die Grundlagen an und Versuchs nochmal :) und wenn dann was nicht klappt bist du im Forum natürlich immer wilkommen
Grüsse
elmato
 
Hi,

verwendest Du eine IDE für Deine Programmierung? Ich weiß, manche Leute sagen es ist nicht sinnvoll als Anfänger eine solche zu verwenden. Aber man kann dort schneller auf eigene Fehler (bspw. Syntax Fehler) reagieren.

Freie IDE: http://www.eclipse.org

Gruß

Romsl
 
Ja benutze Eclipse und ich finde nicht, das ich das ganze programm neu schreiben muß?!
Ich fange zwar jetzt in der Uni mit Java an aber habe eigentlich schon viel Programmiererfahrung und, wenn es in den anderen Sprachen ok war, kann es nicht in Java absolut falsch sein!

...
Ich habe mehrere Bücher auch Java ist eine Insel, welche ich durch arbeiten, aber verstehe nicht, was ich SO...falsch mache im ganzen?
 
Code:
a[anzR] = new Rechteck (); 
System.out.println("Gebensie die Strichstärke ein:");
a[anzR].Strichstaerke = Eingabe ();
In welcher Programmiersprache sollte den ein Code wie obriger funktionieren?
Du versuchst z.B einem Array vom Typ int ein Objekt vom Typ Rechteck zuzuweisen(ganz davon abgesehen das Rechteck eine innere Klasse ist du also erstmal in deiner main Methode eine Instanz von RotateSquare erzeugen müsstest um dann ein neues Rechteck erzeugen zu können)
Dann versuchst du auf Strichstärke zu zugreifen was so auch nicht geht sondern du einen Cast auf Rechteck machen müsstest....
Code:
b = new Rechteck (); b=null;
Was soll b sein? Es wird nirgends deklariert, selbst wenn es deklariert wäre, warum eine Instanz erzeugen und dann gleich wieder auf null setzten
Code:
b=a[0];
dann versuchen einer Variablen(die wohl eine Instanz einer Klasse werden sollte), die du selber auf null gesetzt hast einen Wert zuweisen vom Typ int
Ich hör jetzt auf....
Tut mir leid, aber ich glaube nicht das es Programmiersprachen gibt in denen man solchen Code schreiben kann.....
mfg
elmato


//edit
Hier mal ein wenig Code wie du z.B. deine erst for Schleife schreiben müsstest
Code:
public class a {

	public static void main(String[] args) 
    {
		Object [] obj = new Object[5];
		a a = new a();
        for (int i = 0; i < obj.length; i++) {
			obj[i] = a.new bla();
			((bla)obj[i]).st = i;
		}

   }
	public class bla{
		int st;
	}
}
 
Zuletzt bearbeitet:
Zurück