Wie lange kann / soll das dauern?

klhlubek

Mitglied
Hey Leute,

ich bin gerade am lernen von Java und hab nun ein Projekt abgeschlossen und zwar eins von dem Buch: ,, Java ist auch eine Insel".
Nur das Problem ist, dass der Compiler (IDE) sehr lange braucht und nichts angezeigt wird ( am längsten habe ich es 5 Minuten lang bei NetBeans und 7 Minuten bei Eclipse laufen gelassen).
Es hat zwar VIEL mit Arrays zu tun und ich weis, wie laufzeit- und speicherintensiv sie sind. Außerdem ist mir auch bewusst, dass der Bytecode für Methoden, wegen diverser Beschränkungen in der JVM beschränkt lang sein darf und, dass dieser Platz schnell von den Arrays geschluckt wird, doch vermute ich nicht, dass dies das eigtliche Problem ist, da ich mir sicher bin, dass der Bytecode schon ein wenig länger sein darf... .
Nun zu meine Prozessor und meinen allgemeinen Equipment:
Ich habe einen mehr oder weniger starken "Gamer" PC (Intel I5 4.... , 8 GB Ram , AMDRadeon R9 280X).
Deswegen kann es auch nicht daran liegen.

Also kann es nur an zwei weiteren Sachen liegen.
1. Der Code ist falsch/ unvorteilhaft bzw. ich hab falsch verbessert ( Die Codefassung ist aus dem Buch)

2. Das Betriebssystem hat ein paar Probleme damit.

Hier ist der Code aber noch einmal genau so, wie er bei mir in den beiden IDEs steht (Netbeans und Eclipse) :

Java:
import java.awt.Point;
import java.util.Arrays;

public class Spiel {

	public static void main(String[] args) {
		Point playerPosition = new Point( 10, 9 );
		Point goldPosition = new Point( 6 , 6 );
		Point doorPosition = new Point( 0, 5 );
		Point[] snakePositions = new Point[5];
		int snakeIdx = 0;
		snakePositions[ snakeIdx ] = new Point( 30, 2 );
		boolean rich = false;

		while(true) {
			if(rich && playerPosition.equals( doorPosition ) ) {
				System.out.println("Gewonnen!");
				break;
			}
			if ( Arrays.asList( snakePositions).contains(playerPosition ) ) {
				System.out.println( "ZZZZZ. Die Schlange hat dich!" );
				break;
			}
			if ( playerPosition.equals( goldPosition ) ) {
				rich = true;
				goldPosition.setLocation(-1, -1 );
			}

			for( int y = 0; y < 10; y++ ) {
				for( int x= 0; x < 40; x++ ) {
					Point p = new Point( x, y);
					if( playerPosition.equals( p ))
						System.out.print("&");
					else if( Arrays.asList( snakePositions ).contains( p ))
						System.out.print( "S");
					else if( goldPosition.equals( p ) )
						System.out.print( "$" );
					else if( doorPosition.equals( p ) )
						System.out.print( "." ); 
				}
				
				
				switch ( new java.util.Scanner( System.in ).next() ) {
					case "h" : playerPosition.y = Math.max( 0, playerPosition.y - 1); break;
					case "t" : playerPosition.y = Math.min( 9, playerPosition.y + 1 ); break;
					case "l" : playerPosition.x = Math.max( 0, playerPosition.x - 1 ); break;
					case "r" : playerPosition.x = Math.min( 39, playerPosition.x + 1); break;
				}
				Point snakeHead = new Point( snakePositions[snakeIdx].x,
											 snakePositions[snakeIdx].y );
				
				if ( playerPosition.x < snakeHead.x)
					snakeHead.x--;
				else if( playerPosition.x > snakeHead.x)
					snakeHead.x++;
				if ( playerPosition.y < snakeHead.y)
					snakeHead.y--;
				else if( playerPosition.y > snakeHead.y++ )
					snakeHead.y++;
				
				snakeIdx = (snakeIdx + 1) % snakePositions.length;
				snakePositions[snakeIdx] = snakeHead;
			}
		}



	}

}

Es wäre nett, wenn ihr mir helfen könntet.
 

fLooojava

Bekanntes Mitglied
Java:
while(true){....}
ist eine Endlosschleife. :)

Ich denke also dass hier das Problem liegt und du immer in dieser Schleife dich befindest. Du springst zwar immer wieder raus, aber wenn dein Programm wirklich immer und immer läuft wirst du wohl doch nicht rausspringen.

Kann mir schwer vorstellen dass es an der Komplexität des Programmes liegt.
 
Zuletzt bearbeitet:

klhlubek

Mitglied
Ne das ist jetzt nicht der Fehler, da des break ja da ist, aber ich hab falsch abgeschrieben. :lol:
So soll der Code aussehen. Das ist auch schon logischer :oops:

Java:
import java.awt.Point;
import java.util.Arrays;

public class Spiel {

	public static void main(String[] args) {
		
		Point playerPosition = new Point( 10, 9 );
		Point goldPosition = new Point( 6 , 6 );
		Point doorPosition = new Point( 0, 5 );
		Point[] snakePositions = new Point[5];
		int snakeIdx = 0;
		snakePositions[ snakeIdx ] = new Point( 30, 2 );
		boolean rich = false;

		while(true) {
			if(rich && playerPosition.equals( doorPosition ) ) {
				System.out.println("Gewonnen!");
				break;
			}
			if ( Arrays.asList( snakePositions).contains(playerPosition ) ) {
				System.out.println( "ZZZZZ. Die Schlange hat dich!" );
				break;
			}
			if ( playerPosition.equals( goldPosition ) ) {
				rich = true;
				goldPosition.setLocation(-1, -1 );
			}

			for( int y = 0; y < 10; y++ ) {
				for( int x= 0; x < 40; x++ ) {
					Point p = new Point( x, y);
					if( playerPosition.equals( p ))
						System.out.print("&");
					else if( Arrays.asList( snakePositions ).contains( p ))
						System.out.print( "S");
					else if( goldPosition.equals( p ) )
						System.out.print( "$" );
					else if( doorPosition.equals( p ) )
						System.out.print( "#" ); 
					else
						System.out.print( "." );;
				}
				System.out.println();
			}
				switch ( new java.util.Scanner( System.in ).next() ) {
					case "h" : playerPosition.y = Math.max( 0, playerPosition.y - 1); break;
					case "t" : playerPosition.y = Math.min( 9, playerPosition.y + 1 ); break;
					case "l" : playerPosition.x = Math.max( 0, playerPosition.x - 1 ); break;
					case "r" : playerPosition.x = Math.min( 39, playerPosition.x + 1); break;
				}
				Point snakeHead = new Point( snakePositions[snakeIdx].x,
											 snakePositions[snakeIdx].y );
				
				if ( playerPosition.x < snakeHead.x)
					snakeHead.x--;
				else if( playerPosition.x > snakeHead.x)
					snakeHead.x++;
				if ( playerPosition.y < snakeHead.y)
					snakeHead.y--;
				else if( playerPosition.y > snakeHead.y++ )
					snakeHead.y++;
				
				snakeIdx = (snakeIdx + 1) % snakePositions.length;
				snakePositions[snakeIdx] = snakeHead;
			}
		}



	}
 
Zuletzt bearbeitet:

coco07

Bekanntes Mitglied
klhlubek@
Meinst du, dass Spiele wie "Candy Crush Saga" weniger komplex sind? Auch diese werden in Java Code implementiert und laufen auf Smartphones, welche ein vielfaches langsamer sind, als dein Rechner. Der Unterschied ist, dass solche Spiele von profesionellen Programmierern geschrieben und gewartet werden. Mach dir um die Performance bei solchen "nano Anwendungen" mal keine Sorgen :D

grüße coco07!
 

klhlubek

Mitglied
klhlubek@
Meinst du, dass Spiele wie "Candy Crush Saga" weniger komplex sind? Auch diese werden in Java Code implementiert und laufen auf Smartphones, welche ein vielfaches langsamer sind, als dein Rechner. Der Unterschied ist, dass solche Spiele von profesionellen Programmierern geschrieben und gewartet werden. Mach dir um die Performance bei solchen "nano Anwendungen" mal keine Sorgen :D

grüße coco07!

Klar weis ich das, nur wenn ich schon einmal lerne, dann aber richtig.
Außerdem habe ich sowieso vor mich in der Informatik höcher ausbilden zu lassen. Leider bin ich erst 14 Jahre alt und habe momentan keine ersichtlichen Möglichkeiten mit dem lernen zu beginnen. Also mache ich das seit einem dreiviertel Jahr mit Büchern und bringe mir alles alles selber bei.
 
Zuletzt bearbeitet:

klhlubek

Mitglied
Danke, aber das ist eigt. nur ein Projekt, dass ein paar Methoden für Anfänger in die Praxis umsetzt.
Aber sowas lese ich sehr gerne und bin dankbar für solche Hinweise.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A scan.nextLine() - Wenn man zu lange nichts macht, soll etwas passieren Java Basics - Anfänger-Themen 3
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
berserkerdq2 Lange Variablennamen schlechter Programmierstyle? Java Basics - Anfänger-Themen 4
Devin Wie lange braucht man um Java zu beherrschen und wie kann man es am schnellsten erlernen? Java Basics - Anfänger-Themen 7
CptK Methoden While-Schleife so lange ausführen, wie Methode etwas zurückgibt Java Basics - Anfänger-Themen 2
T Anzeige, wie lange es noch dauert bis ein File gesendet ist. Java Basics - Anfänger-Themen 2
I HTML Tabelle nur so lange erzeugen bis Höhe erreicht Java Basics - Anfänger-Themen 9
B sehr lange Srings in File schreiben Java Basics - Anfänger-Themen 4
O Löschen lange pfade...Fehler? Java Basics - Anfänger-Themen 1
M Lange Methodenaufrufe == suboptimales Klassendesign? Java Basics - Anfänger-Themen 5
T Android App: Laden dauert lange Java Basics - Anfänger-Themen 1
C Wie lange dauert ein Projekt in Java? Java Basics - Anfänger-Themen 10
R Zeit kommt mir zu lange vor... Java Basics - Anfänger-Themen 7
G Socket erstellen dauert sehr lange. Java Basics - Anfänger-Themen 4
hedges Prog braucht lange, schlecht programmiert? Java Basics - Anfänger-Themen 3
H Eingabe so lange wiederholen bis gültiger Wert eingegeben. Java Basics - Anfänger-Themen 7
F Lange Rechenzeit. Java Basics - Anfänger-Themen 10
G Wie lange dauert bei euch das Dateilesen? Java Basics - Anfänger-Themen 18
G Seeehr lange Variablen? Java Basics - Anfänger-Themen 5
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
DrahtEck Schleife soll wieder da anfangen wo ich es möchte ! Java Basics - Anfänger-Themen 17
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Com.Roter Wie soll ich lernen? Java Basics - Anfänger-Themen 17
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
M Bei nach oben scrollen soll Seite aktualisiert werden (Userscript mit Javascript) Java Basics - Anfänger-Themen 10
R App soll selbstständig reagieren, anstatt via Models Java Basics - Anfänger-Themen 0
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
C Ein Algorithmus soll schneller werden Java Basics - Anfänger-Themen 24
K Ein Objekt Auto kennt den Inhalt seines links und rechtsstehenden Autos, wie soll man das ermöglichen Java Basics - Anfänger-Themen 2
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Java Programm soll mit Python kommunizeren Java Basics - Anfänger-Themen 1
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
MichelNeedhelp Brauche zu diesem Labyrinth ein Skript? Der Hamster soll im Urzeigersinn das ganze Labyrinth abgehen und wieder an seinem Ursprungsplatz sein. Java Basics - Anfänger-Themen 40
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
kazzam94 Methode soll Array von Boolean zurückgeben Java Basics - Anfänger-Themen 5
S Scanner soll Groß-/ Kleinschreibung ignorieren Java Basics - Anfänger-Themen 2
E Division von BigInteger soll Gelitkommazahl liefern Java Basics - Anfänger-Themen 46
M Unterklasse soll nicht alle Methoden erben Java Basics - Anfänger-Themen 3
E Methode soll andere Methode der selben Klasse aufrufen Java Basics - Anfänger-Themen 28
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
E Kreis soll eine Raupe darstellen Java Basics - Anfänger-Themen 37
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4
H Koordinateneingabe im 2D Array soll true/false zurückgeben Java Basics - Anfänger-Themen 5
D Etwas unsicher wie es weitergehen soll Java Basics - Anfänger-Themen 2
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
B Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren Java Basics - Anfänger-Themen 9
B Derzeit JSF - Projekt, später soll MobileApp folgen Java Basics - Anfänger-Themen 5
scratchy1 Wie deklariert man eine Methode, die ein Objekt zurückgeben soll? Java Basics - Anfänger-Themen 22
V Vererbung Subklasse soll Superklasse verändern Java Basics - Anfänger-Themen 2
T Random soll Zufallszahl beibehalten. Java Basics - Anfänger-Themen 11
C Objekt soll ein Array sein. Java Basics - Anfänger-Themen 15
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
K Zufalsszahl soll sich nicht wiederholen Java Basics - Anfänger-Themen 9
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
P Methode soll Variable einer anderen Klasse ändern. Wie? Java Basics - Anfänger-Themen 1
J Kopierte Datei soll alte ersetzen. Java Basics - Anfänger-Themen 6
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
I Programm tut nicht was es soll :) Java Basics - Anfänger-Themen 5
Tommy135 Klassen jComboBox macht nicht was sie soll Java Basics - Anfänger-Themen 4
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
R While-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 24
kilopack15 Methode soll int-Array zurückgeben Java Basics - Anfänger-Themen 2
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3
W drawLine(...) - Linie soll nur begrenzt lang sein Java Basics - Anfänger-Themen 9
I Fenster A soll Fenster B schliessen Java Basics - Anfänger-Themen 5
A Variablen Variable soll ihren Wert nach Initialisierung nicht mehr ändern Java Basics - Anfänger-Themen 2
TheMenox Methoden Bestimmung an welche Methode eine andere Methode ihren Wert weitergeben soll Java Basics - Anfänger-Themen 35
M Exception soll Werte mitgeliefert bekommen Java Basics - Anfänger-Themen 12
K Objekt soll Anwendung über Änderungen informieren Java Basics - Anfänger-Themen 8
X Einfache Frage; wie soll ich die spezielle float var speichern? Java Basics - Anfänger-Themen 2
C Ein Button soll Focus rausfinden und Methode starten Java Basics - Anfänger-Themen 9
M Panel erstellen, welches ein Control erhält. Ausgabe soll über einen Stream erfolgen. Java Basics - Anfänger-Themen 0
K Variablenname soll der Inhalt vom String sein Java Basics - Anfänger-Themen 2
R Button soll Wert 1 in Variable schreiben Java Basics - Anfänger-Themen 4
J Interface Bubblesort soll Arrays beliebiger Referenztypen sortieren können. Java Basics - Anfänger-Themen 5
T Array soll Werte aufnehmen Java Basics - Anfänger-Themen 2
B Anwender soll mathematische Funktion eingeben können, Einfachster Fnktionsplotter Java Basics - Anfänger-Themen 4
E Erste Schritte [Noob-Frage] Meine If-Abfrage macht nicht, was sie soll... Java Basics - Anfänger-Themen 2
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
M Weiß nicht, wie ich es nennen soll. Java Basics - Anfänger-Themen 1
T Wenn Schaltjahr ist, soll Februar, einen Tag mehr haben, GUI mit combobox Java Basics - Anfänger-Themen 4
H Erste Schritte Ergebniss soll kleiner als 1000 sein Java Basics - Anfänger-Themen 4
M Warum soll man die Finanlize Methode nicht überschreiben und aufrufen? Java Basics - Anfänger-Themen 2
W Erste Schritte Timer soll jede Sekunde Label aktualisieren Java Basics - Anfänger-Themen 5
T BufferReader soll datei mehrmals lesen Java Basics - Anfänger-Themen 13
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben