java, frage zu programmierung

bawde

Lt. Commander
Registriert
Juli 2006
Beiträge
1.175
hi, ich hatte ein semester java und wollte ein kleines programm für das browserspiel ogame schreiben.

ich weiß leider nicht wie man das in java schreibt.

man hat 3 minen, die etwas erzeugen, die produktion kann man jeweils von 100%, 90%.... 50%.. bis 0% stellen.
so kommen viele verschiedene kombinationen zusammen, z.b. 100%,40%,0% ; 10%, 100%, 80% ...usw.

wie kann ich mit java alle kombinationen abarbeiten oder ausgeben lassen ?
 
Naja, inhaltlich hab ich keine Ahnung von dem Spiel, aber generell brauchst du eigentlich nur 3 verschachtelte Schleifen:
Code:
for (int i = 100; i >= 0; i -= 10)
for (int j = 100; j >= 0; j -= 10)
for (int k = 100; k >= 0; k -= 10)
{ ... }

Edit: Jaja, natürlich nicht immer 0 abziehen, das kann ja nix werden XD
 
Zuletzt bearbeitet:
for (int i = 100; i >= 0; i -= 1)

bzw.

for (int i = 100; i >= 0; i--)


So geht es besser. ;)
 
macht glaubich nicht wirklich einen unterschied ^^ wobei ich auch letztere schreibweise verwenden würde, ist halt üblicher ;)
 
ACH SORRY :D

habs in dem moment nicht richtig gelesen ^^ kA wie ich das falsch verstehen konnte ^^ dachte du hättest sein -= gemeint ;)
 
Ich bezog mich auch überhaupt nicht auf die Aufgabenstellung. Habs mir einmal durchgelesen und nicht verstanden, was er genau will. Dazu muss man wohl das Spiel etwas kennen.
Die Herangehensweise mit den 3 for-Schleifen macht aber natürlich Sinn, so weit kam ich auch noch mit.
Wenn es eine konkretere Beschreibung der Aufgabe des Programms gibt, kann man ja noch detaillierter helfen, aber bis dahin sollte das bisher gelieferte ja reichen, um anfangen zu können. Da der TE ja auch wenig Anstalten macht zu reagieren, scheint es ja auch nicht sonderlich dringend zu sein.
 
Wobei so wie ich es sehe weiß ich auch nicht ganz, wie das gemeint ist...
Kann man die Werte unabhängig voneinander verändern oder muss die Summe immer 100% ergeben usw... weil sieht nicht so aus
so richtig kapier ich auch nicht was gemeint is aber was soll's...
 
Ganz einfach.
Es gibt 3 verschiedene Minen - Deren Produktionen kann man in 10%-Schritten herabsetzen um so Energie zu gewinnen.
Nun möchte er alle möglichen Kombinationen haben.
Ein vernünftiger Ansatz ist etwas knifflig - Die von Anub1s und cYaInH3ll sind nicht ganz richtig ;)
 
Zuletzt bearbeitet:
hi, sorry das ich mich länger nicht gemeldet habe.

mit den 3 schleifen kann ich nicht viel anfangen, ich habe ein schlechtes beispiel gegeben.

ein weiteres und besseres beispiel:
ein kofferschloss
man hat 3 ringe auf denen die zahlen 1 bis 9 sind. damit kann man (glaube ich) 19683 kombinationen machen. 1-1-1 , 1-9-5...usw.

ich würde gerne wissen wie man java dazu bringt alle möglichen kombinationen auszugeben. :)
 
Man mag mich für bekloppt halten, mit mit 3 Ringen von 0 bis 9 kann man wie ich das sehe nur 1000 Kombinationen machen? Also quasi von 0-0-0 bis 9-9-9 ? Und wenn die Ringe nur von 1 bis 9 gehen, dann eben nur 729 Kombinationen?

Naje, wie dem auch sei. In Java hättest du dann meinetwegen eine Methode "public boolean probiere(int i, int j, int k)", die eben die drei Ziffern übergeben bekommt und prüft, ob die Kombination richtig ist. Und so testest du dann:

Code:
for(int i = 1; i <= 9; ++i) {
	for(int j = 1; j <= 9; ++j) {
		for(int k = 1; k <= 9; ++k) {
			if(probiere(i,j,k))
				return; // Oder was auch immer dann gemacht werden soll
		}
	}
}

Das soweit zu deiner Koffer-Frage.
 
Zuletzt bearbeitet:
Hallo,
also dein Beispiel zu dem Kofferschloß hat nichts mit deinem ersten Bespiel zu tun!
Das Kofferschloß hat nämlich genau 9*9*9 = 9³ = 729 Stellungen (bei den Ziffern:1,2,3,4,5,6,7,8,9), da es im Gegensatz zu den Minen auf die Reihenfolge ankommt ( 1-1-9 ist etwas anders als 9-1-1 oder 1-9-1). Deine Minen sind jedoch nicht geordnet!

Wie du auf 19683 Möglichkeiten kommst ist mir absolut unklar, da es ja bei 10 Ziffern nur maximal 1000 Kombinationen gibt.

Zu deinem Beispiel mit dem Koffer:

Zuerst brauchst die Kombinationen ohne Doppelte Zahlen, das sind:

n * (n-1) * (n-2)

Dann die mit einer doppelt Vorkommenden Zahl:

n * (n-1)

Und zum Schluss noch die Kombinationen bei denen alle Zahlen gleich sind:

n

Das macht dann insgesamt:

n * (n-1) * (n-2) + n * (n-1) + n = n * (n * (n - 2) + 2)


Soviel zur Theorie. Es gibt also jede Kombination nur ein einziges mal. Am besten gibt man das ganze aus wenn die Kombination zum ersten mal vorkommt. Sprich die Ausgabe ist in der Form:

z1 <= z2 <= z3

Daraus ist es dann sehr einfach etwas zu basteln

Code:
public class Mines {
	
	public static void main(String[] args) {
		
		for(int i=0; i<=100; i+=10) 
			for(int j=i; j<=100; j+=10) 
				for(int k=j; k<=100; k+=10) 
					System.out.println(i+", "+j+", "+k);	
		
	}
	
}

Alle Angaben sind natürlich nicht auf Richtigkeit geprüft, müssten aber stimmen :D
 
ag3nt schrieb:
Wie du auf 19683 Möglichkeiten kommst ist mir absolut unklar, da es ja bei 10 Ziffern nur maximal 1000 Kombinationen gibt.
ich habe 3^9 gerechnet. jetzt sehe ich, dass das ziemlich dämlich war. :D


edit:
ich bin beeindruckt, das funktioniert wunderbar. DANKE
 
Zuletzt bearbeitet:
Zurück
Oben