Variablen Funktion übergibt den Wert nicht

Apri

Mitglied
Hey, ich hab hier ein kleines Projekt begonnen den ich als Übung mir vorgenommen habe, bin noch dazu sehr frisch in diesem Gebiet. Ich will jetzt nicht lang drum herum reden. Mein Problem: Ich hab hier die Funktion "karte", dieser sollte meinem Array eine zufällige Zahl zwischen 1 und 13 vergeben. Und der "Zaehler" sollte die Werte von "d" und "s" immer um eins erhöhen.
Java:
import java.util.Random;

public class Main {

    public static void main(String[] args) {
    int [] Dealer = new int [6];
    int d = 0;
    int [] Spieler = new int [6];
    int s = 0;
    karte(Dealer,d);
    karte(Spieler,s);
    karte(Dealer,d);
    karte(Spieler,s);


    System.out.println(arrAdd(Dealer));
    System.out.println(arrAdd(Spieler));
    }
    public static int arrAdd (int array[]) {
        int a = 0;
        for (int c=0; array.length > c; c++){
            a = a + array[c];
        }
        return a;
    }

    public static void karte (int arr [], int zaehler){
        Random rnd = new Random();
        int b = rnd.nextInt(13) + 1;
        if(arr.length > zaehler ) {
            arr[zaehler] = b;
            zaehler++; //Der Wert zaehler/d/s sollte hier um 1 steigen.
        }else{
            System.out.println("Fehler");
        }
    }
}
 

httpdigest

Top Contributor
Wenn du innerhalb einer Methode einen Parameterwert per Zuweisung (=) oder Inkrement/Dekrement änderst, hat das keine Auswirkung auf den Aufrufer der Methode. Java verwendet "Call-by-Value".
Also:
Java:
private static void increment(int a) {
  a++;
}
public static void main(String[] args) {
  int a = 1;
  System.out.println(a); // <- "1"
  increment(a);
  System.out.println(a); // <- "1"
}

Du bräuchtest entweder eine Variable (Klassenvariable oder Instanzvariable), in der du den Wert speicherst und erhöhst. Oder du verwendest/"missbrauchst" den Rückgabewert deiner "karte"-Methode, um den erhöhten Wert zurückzuliefern, so dass der Aufrufer diesen seiner eigenen lokalen Variablen zuweisen kann.
 

Apri

Mitglied
Vielen Dank für deine Hilfe. Ich weiß zwar grad nicht genau wie ich weiter Coden soll, aber dank deiner Hilfe weiß ich zumindest worans liegt und wo ich nach einer Lösung suchen muss.
 

mihe7

Top Contributor
Na, schau Dir mal an, wie Du es bei arrAdd gemacht hast. Das (der Rückgabewert) wäre eine Möglichkeit.

Unabhängig davon: in Java schreibt man Bezeichner per Konvention für Methoden, Parameter und Variablen in lowerCamelCase (z. B. dealer, nicht Dealer). Namen von Klassen und anderen Typen in UpperCamelCase.
 

Apri

Mitglied
Ja dann müsste ich aber den return wert jedesmal nachdem ich die Funktion aufgerufen hab an meinem integer d/s übergeben. Dann könnte ich genau so in meiner main Methode einfach d++ /s++ machen und ich käme aufs gleiche. Und bei "arrAdd" verwende ich a nur um die Summe meines Arrays auszugeben. Ich wollte halt alles irgendwie in einer Funktion einpacken das 1. Mein Code Ordentlich aussieht 2. Das alles Systematisch abläuft. Wie gesagt noch gaaanz am Anfang der Lernphase. Und das mit dem Bezeichner wusste ich nicht. :) Aber danke dafür, werde ich mir merken.
PS: Sollte ein simples Blackjack sein. :/
 

mihe7

Top Contributor
Dann könnte ich genau so in meiner main Funktion einfach d++ /s++ machen und ich käme aufs gleiche.
Jein, das ist eine Frage der Zuständigkeiten. Richtig wäre, wenn Du eine separate Klasse schreibst, die als Instanzvariable den zaehler selbst verwaltet (oder Du nimmst gleich eine List her, die macht das dann automatisch :))

Als Funktion könntest Du auch hergehen und das Array einfach füllen lassen, dann können auch keine Fehler auftreten:
Java:
    public static void karten(int[] arr){
        Random rnd = new Random();
        for (int i = 0; i < arr.length; i++) {
            int b = rnd.nextInt(13) + 1;
            arr[i] = b;
        }
    }
 

Apri

Mitglied
Naja die eigentliche Funktion soll Karte für karte ausgeteilt werden. Und wen mein Array ausgefüllt wird, hab ich schon direkt 6 "Karten" gezogen was eigentlich auch nicht zu Blackjacks austeil System dazu passt.
Jeder Spieler und der Croupier erhalten zuerst eine offene Karte, danach erhält jeder Spieler − nicht aber der Croupier − eine zweite offene Karte ....Beginnend mit dem Spieler zur Linken des Croupiers kann nun jeder Teilnehmer solange weitere Karten verlangen („hit“, „Karte“ oder „carte“), bis er glaubt, nahe genug an 21 Punkte herangekommen zu sein und keine weitere Karte mehr will.... Sind alle Spieler bedient, zieht der Croupier seine zweite Karte. Hat er 17 oder mehr Punkte, muss er stehen bleiben, hat er 16 oder weniger Punkte, muss er eine weitere Karte ziehen
https://de.wikipedia.org/wiki/Black_Jack#Spielablauf
 

Apri

Mitglied
Naja die eigentliche Funktion soll Karte für karte ausgeteilt werden. Und wen mein Array ausgefüllt wird, hab ich schon direkt 6 "Karten" gezogen was eigentlich auch nicht zu Blackjacks austeil System dazu passt.
Jeder Spieler und der Croupier erhalten zuerst eine offene Karte, danach erhält jeder Spieler − nicht aber der Croupier − eine zweite offene Karte ....Beginnend mit dem Spieler zur Linken des Croupiers kann nun jeder Teilnehmer solange weitere Karten verlangen („hit“, „Karte“ oder „carte“), bis er glaubt, nahe genug an 21 Punkte herangekommen zu sein und keine weitere Karte mehr will.... Sind alle Spieler bedient, zieht der Croupier seine zweite Karte. Hat er 17 oder mehr Punkte, muss er stehen bleiben, hat er 16 oder weniger Punkte, muss er eine weitere Karte ziehen
https://de.wikipedia.org/wiki/Black_Jack#Spielablauf
Deshalb wollte ich eben die Karten einzeln austeilen und die Array stellen einzeln vergeben, später soll auch noch die Nachfrage kommen ob der Spieler noch eine Karte will oder nicht, dies stellt aber in ersten Blick kein Problem dar. Was noch dazu gesagt gehört. Meisten Online Casinos machen es auch so das der Croupier eine zweite Karte bekommt, diese ist aber verdeckt bis alles Spieler bedient wurden. Ich will hier auch nicht Spiel-Regeln umändern damit es für mich leichter wird, es soll trotzdem eine gewisse Herausforderung darstellen.
 

mihe7

Top Contributor
Und wen mein Array ausgefüllt wird, hab ich schon direkt 6 "Karten" gezogen was eigentlich auch nicht zu Blackjacks austeil System dazu passt.
Da hast Du vollkommen Recht, ich war gedanklich bei Kartenspielen, bei denen man x Karten "auf der Hand" hat. Beim Blackjack hättest Du einen Kartenstapel, der gemischt und anschließend an die Spieler verteilt wird.
 
X

Xyz1

Gast
@mihe7 Kennt Blackjack nicht. :D
So gesehen, hält der Spieler offengelegte Karten auch auf der Hand. Das ist möglich weil das Spiel per Regeln kein kollaboratives Spiel ist.
Im Grunde genommen, lässt es sich auch sehr gut simulieren, um zum Bleistift den Erwartungswert empirisch bestätigen zu können. :)
 
X

Xyz1

Gast
Unterschiede

Dann nenn es so :p 17 und 4 wird meist nicht angeboten, da nur ein Deck; und dadurch ist auch der Erwartungswert anders. Zudem gibt es keine Insurance.... (welche eigentlich niemals gewählt werden sollte). Aber ein Unterschied ist auch, dass es nicht offen gespielt wird. Und damit: Guten Morgen. :D
 

mihe7

Top Contributor
Guten Morgen, da sieht man mal, dass ich kein Spieler bin. Ich wusste gar nicht, dass es da Unterschiede gibt :confused:
 
X

Xyz1

Gast
Ich wusste das ad hoc auch nicht. :D
Wichtig ist, nicht vergessen, Glücksspiel macht süchtig und leert den Geldbeutel. :(
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
_user_q Was brauche ich, um eine eigene "Search for updates"-Funktion einzubauen? Allgemeine Java-Themen 1
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
S Validation Annotation Funktionsparameter vs Funktion vs Attribut Allgemeine Java-Themen 0
R Variablen String mit split-Funktion aufteilen Allgemeine Java-Themen 7
A Serialize - Add Funktion Allgemeine Java-Themen 1
B Discord Bot - Funktion wird nicht aufgerufen Allgemeine Java-Themen 1
J Überschriebene Funktion soll nicht die super Funktion aufrufen Allgemeine Java-Themen 4
Aruetiise Funktion(y = mx+n) in String speichern und berechnen Allgemeine Java-Themen 9
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
MiMa ArrayList Rückgabewerte aus einer Funktion Allgemeine Java-Themen 15
B Gibt es eine Funktion die den Datentyp einer Variablen ermittelt? Allgemeine Java-Themen 8
A Plot funktion applet Allgemeine Java-Themen 4
S Methoden "Unschöne" Break-Anweisung aus verschachtelter Funktion entfernen Allgemeine Java-Themen 11
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
T Best Practice MD5 Funktion Allgemeine Java-Themen 9
perlenfischer1984 Testng : Funktion mit mehreren Parametern testen Allgemeine Java-Themen 5
L Stack overflow bei einer endrekursiven Funktion (Anwendung: Spezialform des Package Merge) Allgemeine Java-Themen 4
C Klassen Problem mit Funktion einer Generischen Klasse die ein Interface implementiert Allgemeine Java-Themen 0
O JNA Zugriff auf Funktion aus DLL Allgemeine Java-Themen 0
Lord.Djerun (Taschenrechner) jButtons mit gleicher Funktion zusammenfassen Allgemeine Java-Themen 6
I Javafx Open/Read und Tree Funktion Allgemeine Java-Themen 14
C Generic-Funktion nur bei bestimmten Typen erlauben Allgemeine Java-Themen 6
F Classpath als Argument in Funktion übergeben Allgemeine Java-Themen 3
H SHA256 update-Funktion Allgemeine Java-Themen 3
J Methoden Abgeänderte Fibonacci Funktion Allgemeine Java-Themen 2
G Polymorphie Funktion als Parameter Allgemeine Java-Themen 8
F Funktion nur in einem Zeitraum Allgemeine Java-Themen 5
H java.util.Timer und Funktion mit SQL Exception Allgemeine Java-Themen 5
M Anzahl der Durchläufe einer Funktion errechnen Allgemeine Java-Themen 6
J Autofill Funktion Uhrzeit Allgemeine Java-Themen 19
G Timeout funktion zu einer Eventlogabfrage Allgemeine Java-Themen 2
M Funktion gesucht: Text vektorisieren Allgemeine Java-Themen 20
K Warum wartet diese Funktion auf beenden des Threads? Allgemeine Java-Themen 3
N JNI Callback Funktion Allgemeine Java-Themen 8
D Problem bei der Darstellung einer trigonometrischen Funktion Allgemeine Java-Themen 2
E Funktion sperren bis Unterfunktionen ferig sind Allgemeine Java-Themen 3
D Referenz einer Funktion aus einer anonymen Klasse? Allgemeine Java-Themen 3
J Funktion zu einer Uhrzeit/datum ausführen Allgemeine Java-Themen 4
S eigene Update Funktion Allgemeine Java-Themen 5
Ark Name für Funktion gesucht Allgemeine Java-Themen 5
Screen Eine mathematische Funktion als Argument für eine Methode - Matheparser? Allgemeine Java-Themen 21
Daniel_L Bug in Copy-Funktion bei HTML-Editorpane? Allgemeine Java-Themen 4
multiholle Aufrufer einer Funktion ermitteln Allgemeine Java-Themen 13
W JMF- Player.getDuration() Funktion spinnt Allgemeine Java-Themen 2
C JTextComponent - mit Schlagwörter Funktion aufrufen Allgemeine Java-Themen 2
SuperSeppel13 php-funktion aufrufen Allgemeine Java-Themen 5
M get Funktion von Vector Allgemeine Java-Themen 4
V Wie Enum an Funktion "übergeben" ? Allgemeine Java-Themen 4
G Webserver Funktion Allgemeine Java-Themen 3
S Random funktion in einer Grafischen Oberfläche Allgemeine Java-Themen 10
C Funktion stoppt alles Allgemeine Java-Themen 7
G Funktion aus array aufrufen Allgemeine Java-Themen 16
P Funktion vorhanden - wie auf Transitivität erweitern? Allgemeine Java-Themen 6
N Funktion als Parameter einer anderen Funktion Allgemeine Java-Themen 5
lumo Row Header ist public, zeigt die funktion aber nicht public Allgemeine Java-Themen 8
P Unterschied zwischen Funktion und Methoden Allgemeine Java-Themen 3
B E-Funktion mit Java Allgemeine Java-Themen 9
S verstehe diese Funktion nicht Allgemeine Java-Themen 6
S Referenz auf Funktion? Allgemeine Java-Themen 16
K Funktion unabhängig vom Namen aufrufen Allgemeine Java-Themen 5
F Vorteile -> Funktion Allgemeine Java-Themen 2
P gegenstück zur php funktion gzinflate()? Allgemeine Java-Themen 3
D Problem bei Aufruf einer Funktion Allgemeine Java-Themen 3
J Welche Daten für Ative-X Funktion? Allgemeine Java-Themen 5
X Replay Funktion realisieren? Allgemeine Java-Themen 5
J Funktion alle Möglichkeiten berücksichtigen Allgemeine Java-Themen 5
P DLL Funktion benutzen Allgemeine Java-Themen 3
S Fortran Funktion mit JNI aufrufen: java.lang.UnsatisfiedLink Allgemeine Java-Themen 2
T Pipe-Funktion - Prozente falsch? Allgemeine Java-Themen 8
A undo funktion in Malprogramm Allgemeine Java-Themen 15
J Method.invoke -> Exceptions der Funktion abfangen Allgemeine Java-Themen 5
M Frage zu resume funktion bei downloadmanager Allgemeine Java-Themen 7
M Funktion liest nach Textaus aus der vorigen Zeile Allgemeine Java-Themen 2
G nichtabstrakte Funktion zu einer Interface hinzufügen Allgemeine Java-Themen 6
M Funktion des JRE Allgemeine Java-Themen 8
B Nach Deserialisieren: Elemente des JFrames ohne Funktion Allgemeine Java-Themen 5
A funktion schiffeZeichnen zwei mal aufrufen Allgemeine Java-Themen 16
P Suche String Tutorial zu Suche&Ersetze Funktion von text Allgemeine Java-Themen 35
D Mathematische Funktion grafisch in Java darstellen Allgemeine Java-Themen 2
7 Gibts in Java ne Funktion, die ein ganzes Array ausgibt Allgemeine Java-Themen 11
L sin cos funktion Allgemeine Java-Themen 5
L return-Funktion Allgemeine Java-Themen 5
L return Funktion Allgemeine Java-Themen 6
M Funktion als Parameter oder andere Möglichkeit Allgemeine Java-Themen 3
H Funktion aus einer anderen Klasse ausführen Allgemeine Java-Themen 3
TRunKX Gibt es ne fertige Java Funktion die Dateien vergleicht? Allgemeine Java-Themen 4
M Funktion wird nicht durchlaufen. Allgemeine Java-Themen 13
G Bilder zeichnen und Zoom Funktion Allgemeine Java-Themen 2
G java funktion in JSP file aufrufen. Allgemeine Java-Themen 2
K funktion aus einem String aufrufen Allgemeine Java-Themen 9
L C# Funktion in Java aufrufen Allgemeine Java-Themen 4
thE_29 Funktion mit Funktionaufrufen Allgemeine Java-Themen 4
G Funktion, die langsam wächst Allgemeine Java-Themen 7
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
S Methode übergibt immer den gleichen Wert Allgemeine Java-Themen 21
J Wie kann man herausfinden, wo der Wert herkommt ? Allgemeine Java-Themen 13
JAnruVA Datentypen Berechneten String-Wert in Double umwandeln um weiter zu rechnen Allgemeine Java-Themen 7
T Verschachtelte For-Schleife gibt falschen Wert zurück, Abbruchbedingung evtl. falsch? Allgemeine Java-Themen 9
L 2 Dimensionale ListArray Abfrage nach einem Wert suchen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben