[Studium] Mäxchenspiel programmieren

HorstPeter12

Mitglied
Nabend,
folgende Aufgabe:
Abgabe1_v0.2.pdf

hier mein code bisher:
Code:
import java.lang.Math;
public class Maexchen {
    public static void main (String... args) {
       
        int spielerAnzahl=Integer.parseInt(args [0]);            // Spielerzahl
       
        int x=2*(spielerAnzahl-1)+1;                            // Anzahl Parameter x
        int ergebnissSpieler=0;
        int wurfcomputer1=(int) (Math.random()*6)+1;
        int wurfcomputer2=(int) (Math.random()*6)+1;
        int ergebnissComputer=0;
       
        int[] a=new int[x];
       
        for (int i=0; i<a.length;i++) {
            a[i]=Integer.parseInt(args [i]);
           
        }
       
        for(int i=0; i<x-1; i++) {
            if (a[i]<=6 && a[i+1]<=6 && a[i]>0 && a[i+1]>0) {
                    if (a[i]==2 && a[i+1]==1) {
                        ergebnissSpieler=+1000;
                    } else if (a[i]==a[i+1]) {
                        ergebnissSpieler=+100*a[i];
                    } else {
                        ergebnissSpieler=10*Math.max(a[i],a[i+1])+Math.min(a[i],a[i+1]);
                    }
                    System.out.print(ergebnissSpieler);
            } else {
                    System.out.print(-1);
                    System.out.print(-1);
            } System.out.println();
        }
            if (wurfcomputer1==2 && wurfcomputer2==1) {
                ergebnissComputer=+1000;
            } else if (wurfcomputer1==wurfcomputer2) {
                ergebnissComputer=+100*wurfcomputer1;
            } else {
                ergebnissComputer=10*Math.max(wurfcomputer1,wurfcomputer2)+Math.min(wurfcomputer1,wurfcomputer2);
            }
            System.out.print(ergebnissComputer);
    }
}

Was zum Henker mach ich falsch? Danke im Vorraus.
 

Anhänge

Java:
ergebnissSpieler=+1000;
Das + kann weggelassen werden. Oder meinst du vielleicht
Java:
ergebnissSpieler+=1000;


Ich verstehe die Aufrufsyntax, die in dem Dokument steht, nicht.
 
Ich verstehe nicht, wie ich meine Fehlermeldungen bekomme, es soll ja immer -1 -1 kommen, wenn ich bei der Spieleranzahl (in cmd die erste Zahl die wir eingeben) zum Beispiel -100 oder 268 nimmst, die Spieleranzahl ist ja wie in der Pdf steht auf 5 Mitspieler begrenzt.
Am Schluss muss ich natürlich noch die Stelle mit dem Sieger küren machen, aber das wollte ich erst machen, wenn ich das Problem mit den Fehlermeldungen gelöst habe.
Zum -1 -1 Problem: Ich denke man muss das Ganze irgendwie in eine if-Bedingung packen, so in etwa:
if (a<2 && a>6) {
System.out.print(-1);
System.out.print(-1);
else....
mein Programm zum berechnen der Spielerpunktzahl - nur habe ich dann das Problem, dass es mehrere -1 -1 schreibt, nämlich für die jeweilige Spieleranzahl. Ich will aber bei ungültiger Eingabe nichts weiteres als einmal diese beiden -1 -1 in cmd.

Hoffe ich konnte mein Problem verständlich rüber bringen 😀
MFG
 
Hallo.


Also
Java:
int x = 2 * (spielerAnzahl - 1) + 1;
wird so nicht gehen, wenn der Benutzer -1 -1 angibt.
Weil spielerAnzahl ja -1 ist. Du solltest also vorher überprüfen ob die Eingaben korrekt sind.

Die Exception die du bekommen wirst wird wahrscheinlich darauf hinweisen, dass der Index Negativ ist.
Siehe
Java:
int[] a = new int[x];

Und if (a<2 && a>6) wird nie zutreffen. Weil a nie kleiner 2 sein kann und zugleich größer als 6.

Grüße
 
Dann lese nochmal mein Post. 😀
Ich habs jetzt so gemacht wie du glaube ich mal gemeint hast und es funktioniert mit den -1 -1 egal wieviele Spieler ich eingebe 🙂 Hier mal mein Code:
Code:
import java.lang.Math;
public class Maexchen {
    public static void main (String... args) {
       
        int spielerAnzahl=Integer.parseInt(args [0]);            // Spielerzahl
       
        int x=2*(spielerAnzahl-1)+1;                            // Anzahl Parameter x
        int ergebnissSpieler=0;
        int wurfcomputer1=(int) (Math.random()*6)+1;
        int wurfcomputer2=(int) (Math.random()*6)+1;
        int ergebnissComputer=0;
       
       
       
       
    if (x<=6 && x>0) {
       
        int[] a=new int[x];
       
        for (int i=0; i<a.length;i++) {
            a[i]=Integer.parseInt(args [i]);
       
            }
       
        for(int i=1; i<x-1; i=i+2) {
            if (a[i]<=6 && a[i+1]<=6 && a[i]>0 && a[i+1]>0) {
                   
                    if (a[i]==2 && a[i+1]==1) {
                        ergebnissSpieler=+1000;
                       
                    } else if (a[i]==a[i+1]) {
                        ergebnissSpieler=+100*a[i];
                       
                    } else {
                        ergebnissSpieler=10*Math.max(a[i],a[i+1])+Math.min(a[i],a[i+1]);
                           
                    }
                    if (a[i]<=6 && a[i]>0) {
                        System.out.print(ergebnissSpieler);
                        System.out.print(" ");
                    }
        }
    }     if (wurfcomputer1==2 && wurfcomputer2==1) {
                ergebnissComputer=+1000;
               
            } else if (wurfcomputer1==wurfcomputer2) {
                ergebnissComputer=+100*wurfcomputer1;
               
            } else {
                ergebnissComputer=10*Math.max(wurfcomputer1,wurfcomputer2)+Math.min(wurfcomputer1,wurfcomputer2);
            }
            System.out.print(ergebnissComputer);
           
    } else {
    System.out.print(-1);
    System.out.print(-1);
   
}
}
}

Mir fehlt jetzt eigentlich echt nurnoch die Sache mit dem Gewinner bestimmen, kann ich da wieder mit arrays arbeiten und praktisch aus meinen arrays das größte rausziehen, es einmal über die Schleife laufen lassen und damit die Punktzahl des größten arrays ausliefern? = Sieger // wenn ja, wie genau definier ich dann, dass die ersten beiden eingaben, also array [1] und array [2] Spieler1 entsprechen usw.??

Danke
 
Also
Java:
int x = 2 * (spielerAnzahl - 1) + 1;
wird so nicht gehen, wenn der Benutzer -1 -1 angibt.
Im Dokument sind Aufrufbeispiele. Mit den Parametern 0, 1 und 1 soll ausgegeben werden:
-1 -1
Die Antwortsyntax lautet nämlich:
<Sieger oder -1 bei Fehler> <Punktezahl oder -1 bei Fehler>

@ truesoul Die Formel int x = 2 * (spielerAnzahl - 1) + 1; ist aber in der PDF vorgegeben. D:
Da steht es wie folgt drin:
x >= 2 * (Anzahl der Mitspieler – 1) + 1
 
WIm Dokument sind Aufrufbeispiele. Mit den Parametern 0 1 und 1 soll ausgegeben werden:
-1 -1
Die Antwortsyntax lautet nämlich:
<Sieger oder -1 bei Fehler> <Punktezahl oder -1 bei Fehler>


Da steht es wie folgt:
x >= 2 * (Anzahl der Mitspieler – 1) + 1
Das wird bei mir mit meinem jetzigen Code ausgegeben. Im jetzigen Code gibt er halt für jeden Spieler die Punktzahl noch mit aus, das muss ich noch ändern ansonsten passt es. Das Problem mit dem -1 -1 hab ich schon gelöst indem ich vorher überprüfe if (x<=6 && x>0) ansonsten System.out.print(-1) System.out.print(-1) (ganz am Ende des codes)
 

Zurück
Oben