Variablenwerte ändern ohne return Statement?

javapingu

Mitglied
Hallo liebe Community,

Ich möchte einige Variablen aus der main Methode ändern, mithilfe einer anderen Methode. Dabei soll die genutzte Methode void sein und die Ausgabe der neuen Variablen-Werte soll auch in der main Methode selbst erfolgen.

Zum Beispiel:
[CODE lang="java" title="Beispiel"]public class Aendern {
public static void main(String[] args) {
int a= 1;

// ...code

System.out.println("Ausgabe des veränderten Wertes von a");
}

// methode ohne return
}[/CODE]

Aber im Grunde funktioniert doch Java genau so nicht, oder? Deshalb gibt es doch Parameterübergabe und return in Java?
Leider ist das beste, was mir nach Recherchen eingefallen ist, die Nutzung eines AtomicIntegers, der das Problem vermeidet, dass eine Kopie erstellt wird.
Mein Lösungsvorschlag:
Java:
package testUmgebung;

import java.util.concurrent.atomic.AtomicInteger;

public class Aendern {
    public static void main(String[] args) {
        int x = 1;

        AtomicInteger a = new AtomicInteger(x);
        int faktor1 = x + 1;

        aendere(a, faktor1);
        System.out.println("a: " + a);
    }

    static void aendere(AtomicInteger xToa, int faktor1) {
        xToa.set(faktor1);
    }

}

Leider muss ich dazu jedoch diesen Importieren...und ich glaube nicht das, dass im Sinne der Lösung ist :/
Leider fehlt mir auch jegliche Idee wie ich das ohne Konstante Felder, return oder Output in der aendere Methode realisieren könnte >.< Stehe leider total im Wald...

Über Hilfe würde ich mich riesig freuen :)

Vielen Dank!
 

javapingu

Mitglied
Du kannst auch ein Array mit a als einziges Element übergeben. Dann kannst du das einzige Element ändern und in der Main weiterverenden.
Autsch. 🤦‍♂️Ohhjjeee - das ich bei soetwas mit irgendwelchen AtomicIntegern um mich werfe :D Dankeschön :D Ich bin einfach nicht darauf gekommen 🤦‍♂️🤦‍♂️🤦‍♂️😅
Vielen Dank - es läuft jetzt :D
 

mihe7

Top Contributor
Naja, ob AtomicInteger oder Array: Du brauchst halt eine Referenz auf den Wert - der dann auch veränderbar sein muss. Da bietet sich also AtomicInteger durchaus an. Natürlich könnte man auch selbst eine Klasse (z. B. IntValueHolder) einführen.
 

javapingu

Mitglied
Naja, ob AtomicInteger oder Array: Du brauchst halt eine Referenz auf den Wert - der dann auch veränderbar sein muss. Da bietet sich also AtomicInteger durchaus an. Natürlich könnte man auch selbst eine Klasse (z. B. IntValueHolder) einführen.
Ich verstehe. Im Endeffekt könnte ich auch einen Pointer nehmen.
Hauptsache es ist etwas was eine Referenz zu dem Wert direkt hat - denn so wird auch der Wert aufgrund der Referenz tatsächlich geändert. Also so ungefähr könnte es ja auch mit einem Pointer (und wahrscheinlich noch zig anderen Lösungsmöglichkeiten?) aussehen:

Java:
import java.awt.Point;
//main
Point zuAendern = new Point(x, 1);

public static void aendere(Point zuAendern) {
    int newPoint = zuAendern.x * zuAendern.y;
    zuAendern.setLocation(newPoint, zuAendern.y);
}

Was mich jetzt interessiert: In so einer Klasse IntValueHolder müsste ich die Referenz zu den Variablen herstellen richtig?

Vielen Dank - jetzt verstehe ich das ganze auch viel besser :)
 

mihe7

Top Contributor
Im Endeffekt könnte ich auch einen Pointer nehmen.
Ja, wenn es den in Java geben würde :)

In so einer Klasse IntValueHolder müsste ich die Referenz zu den Variablen herstellen richtig?
Im einfachsten Fall besteht die Klasse einfach aus einem Attribut, das eben den int-Wert speichert.

Kleines Beispiel:
Java:
public class Test {
    static class IntValueHolder {
         int value;
    }

    public static void main(String[] args) {
        IntValueHolder holder = new IntValueHolder();
        holder.value = 5;
        
        updateValue(holder);
        System.out.println(holder.value);
    }

    private static void updateValue(IntValueHolder holder) {
        holder.value = (int)(Math.random() * 1000);
    }    
}

Hinweis: das ist keine Best Practice. Sinnvollerweise erstellt man von vornherein geeignete Abstraktionen (Klassen), die das Problem modellieren. Dann hat man die Attribute eben gleich dort, wo sie hingehören :)
 

mrBrown

Super-Moderator
Mitarbeiter
Also so ungefähr könnte es ja auch mit einem Pointer (und wahrscheinlich noch zig anderen Lösungsmöglichkeiten?) aussehen:
Point != Pointer – Point ist ein Punkt in einem zwei-dimensionalen Koordinaten-System ;)


Generell kann man alle Klassen/Typen, die veränderlich sind, für sowas missbrauchen. Am sinnvollsten ist aber, einen expliziten Typ dafür zu nutzen oder selbst einen passenden zu erstellen. Alles andere hat nur Nachteile, sei es beim Array die fehlende Typsicherheit (das Array kann auch 0 oder 5 Elemente enthalten, statt dem genau einem erwarteten) oder der völlig nichtssagenden Typen bei Point (wie soll irgendwer drauf kommen, dass Point kein Punkt ist, sondern beide Werte als Parameter und der eine Wert dann zur Rückgabe genutzt werden soll?).


AtomicInteger bietet sich an, einfach weil es schon da ist und häufig dafür benutzt wird. Besser wäre es aber, einen expliziten Typen dafür zu modellieren, zB MutableInt oä, was dann auch nur Methoden zum ändern des Wertes bietet.
 

javapingu

Mitglied
Ein riesen großes Dankeschön @mihe7 für den Code :)
Und auch richtig großes Danke an @mrBrown =) MuteableInt klingt echt cool :)
p.s.: und ich werde aufpassen präziser zu formulieren :) Ich meinte natürlich Point aus java.awt.* :D

Schönen Abend noch Allen :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
tingc Variablenwerte tauschen Java Basics - Anfänger-Themen 4
T Woher nimmt das Programm die Variablenwerte???? Java Basics - Anfänger-Themen 2
E Senden von Objects an Client. Variablenwerte kommen nicht an Java Basics - Anfänger-Themen 5
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
B Reflection ändern von Objekten in Objekten Java Basics - Anfänger-Themen 12
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
J int innerhalb einer Datei ändern Java Basics - Anfänger-Themen 1
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
B Variablen Int Variabel in JTextField ändern Java Basics - Anfänger-Themen 2
W Methode ändern Java Basics - Anfänger-Themen 65
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
H JavaFX Hintergrundfarbe ändern, warten, Hintergrundfarbe wieder ändern Java Basics - Anfänger-Themen 34
B Filepath "ändern"? Java Basics - Anfänger-Themen 5
t2im Java Array-Länge ändern? Java Basics - Anfänger-Themen 22
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
amelie123456 Geschwindigkeit der Methode bewegeDich eines Objekts ändern Java Basics - Anfänger-Themen 2
P Standard resources-Verzeichnis ändern Java Basics - Anfänger-Themen 9
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
J Itext-Paragraph Position ändern Java Basics - Anfänger-Themen 13
Z Attribut ändern ohne Kontrollstruktur Java Basics - Anfänger-Themen 2
R Boolean value ohne Kontrollstrukturen ändern Java Basics - Anfänger-Themen 5
V Umgebungsvariable Genutzte Javaversion in der Konsole ändern Java Basics - Anfänger-Themen 5
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
R Was muss ich an meinem Code ändern? Java Basics - Anfänger-Themen 2
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
J Objekt bei Auswahl in jList ändern Java Basics - Anfänger-Themen 6
W Eclipse Autoformatierung für Streams ändern ? Java Basics - Anfänger-Themen 1
M Programm per Nutzereingabe ändern Java Basics - Anfänger-Themen 3
D Wert des Arrays unter Bedingungen ändern Java Basics - Anfänger-Themen 1
L Java Date Format ändern Java Basics - Anfänger-Themen 5
M Mit KeyListener Farbe von Label ändern Java Basics - Anfänger-Themen 13
F Schriftgröße ändern Java Basics - Anfänger-Themen 2
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
J Kapselung Array in Set ändern und in Main ausgeben lassen Java Basics - Anfänger-Themen 4
D scheduledAtFixedRate speed ändern Java Basics - Anfänger-Themen 2
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
krgewb Icon von JButton ändern Java Basics - Anfänger-Themen 1
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
Henri Erste Schritte Iteration ändern Java Basics - Anfänger-Themen 12
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
CptK Interface Cursor ändern Java Basics - Anfänger-Themen 8
B Eclipse Tabellen Farbe ändern? Java Basics - Anfänger-Themen 2
I Ordnung JLayeredPane mit Button ändern Java Basics - Anfänger-Themen 5
S Array Eintrag ändern Java Basics - Anfänger-Themen 6
J variablePathPart ändern nach dem Ordner abgearbeitet worden ist Java Basics - Anfänger-Themen 1
P Methode soll Variable einer anderen Klasse ändern. Wie? Java Basics - Anfänger-Themen 1
M im String Alphabet ändern Java Basics - Anfänger-Themen 3
L Threads Mit Threads JLabel ändern! Java Basics - Anfänger-Themen 2
Jinnai4 Werte in Textdatei ändern Java Basics - Anfänger-Themen 2
S Bestehendes Java Programm, einen festen Wert ändern Java Basics - Anfänger-Themen 17
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
T Parameter das übergeben wurde ändern? Java Basics - Anfänger-Themen 1
M Methoden Generische Klasse - ändern einzelner Attributwerte Java Basics - Anfänger-Themen 2
Hijo2006 Eclipse: Java Icon ändern Java Basics - Anfänger-Themen 9
S Schriftart/Farbe im Grafikfenster ändern Java Basics - Anfänger-Themen 8
G BenutzerDaten teilweise ändern in txt Datei Java Basics - Anfänger-Themen 10
J Button in anderer Klasse ändern Java Basics - Anfänger-Themen 3
E Hash map Value Wert hochzuholen/ändern Java Basics - Anfänger-Themen 7
H Innerhalb einer Methode eine Variable der aufrufenden Methode ändern? Java Basics - Anfänger-Themen 2
Voreck Jar Dateien Standart programm ändern Java Basics - Anfänger-Themen 12
R Vererbung Variable in einem übergeordneten Objekt ändern Java Basics - Anfänger-Themen 4
R JTextArea final Status ändern Java Basics - Anfänger-Themen 11
W Methoden Methode auf Array aufrufen, und dieses Array dabei ändern? Java Basics - Anfänger-Themen 10
A Variablen Variable soll ihren Wert nach Initialisierung nicht mehr ändern Java Basics - Anfänger-Themen 2
B Alle Attribute von Klasse bekommen und ändern Java Basics - Anfänger-Themen 12
J Klassen Klassenmethode um Variable zu ändern Java Basics - Anfänger-Themen 7
L zweidimensionales char array reihenfolge ändern ? Java Basics - Anfänger-Themen 2
D Eigenschaften eines Objektes ändern Java Basics - Anfänger-Themen 1
D Opencsv-3.5 DEFAULT_DATE_FORMAT ändern Java Basics - Anfänger-Themen 8
M Erste Schritte Code zur Laufzeit ändern lassen Java Basics - Anfänger-Themen 3
fLooojava Laufender Thread | Boolean ändern Java Basics - Anfänger-Themen 9
I erstelle Vorschaubild mit der lib PDF-Renderer und möchte danach Dateiname ändern -> geht aber nicht Java Basics - Anfänger-Themen 0
G Bei Mouseover Grafik ändern, gutes Vorgehen gesucht Java Basics - Anfänger-Themen 0
U Tabelle ändern und die Inhalte speichern Java Basics - Anfänger-Themen 9
J Input/Output Zeile in Textdatei ändern Java Basics - Anfänger-Themen 14
Z JLabel Icon ändern Java Basics - Anfänger-Themen 2
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
N Variablen ändern wenn eine andere geändert wird Java Basics - Anfänger-Themen 7
U Farbe meines Würfels jede sekunde ändern! Java Basics - Anfänger-Themen 5
I JTree, Root-Name ändern Java Basics - Anfänger-Themen 4
Z System(einstellungen) per Java ändern/Steuern | Betriebssystembezogen Java Basics - Anfänger-Themen 7
W Klassen Variable einer anderen Klasse ändern (Threads) Java Basics - Anfänger-Themen 3
E Systemzeit ändern Java Basics - Anfänger-Themen 7
W Konsolenprograamm in GUI-Programm ändern Java Basics - Anfänger-Themen 1
D JLabel ändern in actionperformed Java Basics - Anfänger-Themen 2
S Bild bei Kontakt ändern Java Basics - Anfänger-Themen 2
D Werte von Variablen über Methode ändern Java Basics - Anfänger-Themen 10
Jackii Globale Variable aus anderer Klasse ändern... Java Basics - Anfänger-Themen 4
llabusch Interface Layout eines Labels während der Laufzeit ändern Java Basics - Anfänger-Themen 0
S Variablen Variable bei drücken eines Buttons ändern Java Basics - Anfänger-Themen 1
J Drucker parameter ändern Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben