Variablen Inhalt einer Variable im Code verwenden?

Ameise04

Neues Mitglied
Hallo Leute,
ich habe für eine Informatik HA folgenden Code als Test erstellt allerdings ist mir aufgefallen, dass es nicht funktioniert wie ich es vorhabe bzw. ich nicht weiß wie ich es umsetzen soll...
Java:
package test123;
import java.util.Scanner;

public class Test123 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String papierxstein = "Papier umwickelt Stein. Stein gewinnt!";
        String papierxschere = "Schere zerschneidet Papier. Schere gewinnt!";
        String papierxpapier = "Beide sind gleich stark. Unentschieden!";
        System.out.println("Komm wir spielen ssp. 3...2...1!");
        String Wahl = scanner.next();
        Wahl = Wahl.toLowerCase();
        System.out.println("Papier!");
        System.out.println(papierx+Wahl);
    }

}

Mein Ziel dabei war, dass der Inhalt des "Wahl"- Strings an das papierx angehängt wird damit der entsprechende String vom Anfang ausgegeben wird.
Könnte mir einer sagen wie das geht?
So wie es jetzt da steht sucht das Programm ja nach einer Variable papierx, der es den Inhalt von Wahl anhängen kann soweit ich das verstehe. Aber mein ziel ist es ja papierx und danach den Inhalt von Wahl als Stringname zu verwenden....

Danke für die Antworten im Vorraus ^^
 

kneitzel

Top Contributor
Du kannst so nicht auf lokale Variablen zugreifen. Du kannst da mehrere Dinge machen:
a) Im Code etwas schreiben z.B. mit switch:
Java:
switch(Wahl) {
    case "Papier":
        // ...
        break;
        
    case "Stein":
        // ..
        break;
        
    // ...
}

Das ist aber so natürlich eher unüblich. Eine Variante, die deutlich besser ist:
b) Du nutzt statt mehrere Variablen nur eine Variable, die dann Key / Value Paare speichern kann. Das wäre also eine Map:
Java:
Map<String, String> rules = new HashMap<>();
rules.put("papierxstein", "Papier umwickelt Stein. Stein gewinnt!");
rules.put("papierxschere", "Schere zerschneidet Papier. Schere gewinnt!");
rules.put("papierxpapier", "Beide sind gleich stark. Unentschieden!";)
    
System.out.println(rules.get("papierxstein"));

Das wäre so auf die Schnelle etwas, das mir da direkt einfällt.
 

mihe7

Top Contributor
Noch eine Ergänzung zur Map von @kneitzel: den Key zum Abruf der Regel müsstest Du in Deinem Code dann natürlich per "papierx" + Wahl bilden.

Nebenbei: in Java schreibt man Bezeichner von Variablen und Methoden in lowerCamelCase, von Typen (Klassen & Co.) dagegen in UpperCamelCase. Gemäß dieser Konvention sollte die Variable wahl statt Wahl heißen.
 

EinNickname9

Bekanntes Mitglied
Das Gesuchte würde so funktionieren, wenn Du es nicht mit einer Map machen möchtest:

Java:
import java.lang.reflect.Field;
import java.util.Locale;
import java.util.Scanner;

public class Schniekern {
    public static final String papierxstein = "Papier umwickelt Stein. Papier gewinnt!";
    public static final String papierxschere = "Schere zerschneidet Papier. Schere gewinnt!";
    public static final String papierxpapier = "Beide sind gleich stark. Unentschieden!";
    // ...

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("Treffe Deine Wahl!:");
            String line = scanner.nextLine().trim().toLowerCase(Locale.ROOT);
            try {
                Field field = Schniekern.class.getField("papierx" + line);
                System.out.println(field.get(null));
            } catch (NoSuchFieldException | IllegalAccessException exception) {
                System.out.println("Das kenne ich nicht, bitte noch mal.");
                i--;
            }
        }
    }
}

By the way: Wenn das Papier den Stein umwickelt, dann gewinnt das Papier.
 

kneitzel

Top Contributor
Das Gesuchte würde so funktionieren, wenn Du es nicht mit einer Map machen möchtest:
Aber da möchte ich dann doch einmal ganz ausdrücklich darauf hinweisen:
Dieser Einsatz von Reflection funktioniert technisch aber das stellt eine Lösung da, die man auf keinen Fall so anwenden sollte.

Das stellt ja noch dieses Pongo Tutorial (oder wie hiess das YT Tutorial mit dieser Klasse Var voll mit lauter public static Klassenvariablen) in den Schatten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Inhalt einer Variable auswerten, die sich immer wieder ändert Java Basics - Anfänger-Themen 1
F Inhalt einer Variable per Code herausfinden? Java Basics - Anfänger-Themen 9
F Einer char-Variable "leeren" Inhalt zuweisen Java Basics - Anfänger-Themen 4
T Inhalt aus TextField in Attribut einer Instanz schreiben Java Basics - Anfänger-Themen 5
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
D Ich suche nach einer Möglickeit den Webseiten Inhalt per Java zu analysieren Automatisch Java Basics - Anfänger-Themen 3
H Input/Output Inhalt einer GUI in Textdatei speichern Java Basics - Anfänger-Themen 1
K Inhalt von einer csv-Datei abspeichern Java Basics - Anfänger-Themen 3
G JTable: Inhalt einer selektierten Zeile speichern Java Basics - Anfänger-Themen 2
G Inhalt einer JTextArea wird nicht dargestellt Java Basics - Anfänger-Themen 8
L Split + Zeilen einer Datei mit bestimmtem Inhalt löschen Java Basics - Anfänger-Themen 23
M Inhalt/Wert aus einer JList ablesen Java Basics - Anfänger-Themen 5
I Mehrere ArrayLists mit einer for( : ) Schleife auf Inhalt prüfen Java Basics - Anfänger-Themen 6
H Input/Output Inhalt einer TextArea in Hex umwandeln Java Basics - Anfänger-Themen 10
D Inhalt der Spalten einer Tabelle addieren Java Basics - Anfänger-Themen 4
D Inhalt einer Liste auf nur ein Wert überprüfen ohne die Liste komplett zu interieren Java Basics - Anfänger-Themen 6
B Inhalt einer Datei ausgeben Java Basics - Anfänger-Themen 4
G Inhalt einer JComboBox wechseln Java Basics - Anfänger-Themen 5
N jpg vom Inhalt einer JeditorPane erstellen. Java Basics - Anfänger-Themen 10
T Am Ende einer Textdatei inhalt einfügen Java Basics - Anfänger-Themen 3
P Text vor und nach dem Inhalt einer Datei einfügen Java Basics - Anfänger-Themen 3
T Inhalt einer Datei in Jlist darstellen Java Basics - Anfänger-Themen 6
J Inhalt einer Text file löschen Java Basics - Anfänger-Themen 6
W Inhalt einer Datei aus mehreren Ordnern auslesen Java Basics - Anfänger-Themen 4
D Inhalt einer URL speichern. Java Basics - Anfänger-Themen 4
M Inhalt einer TextArea in die Zwischenablage kopieren Java Basics - Anfänger-Themen 2
O SQL-abfrage mit inhalt einer Choicelist Java Basics - Anfänger-Themen 5
E Inhalt einer array zelle prüfen? Java Basics - Anfänger-Themen 2
O Inhalt einer .txt Datei verändern Java Basics - Anfänger-Themen 9
N Inhalt einer TextArea überschreiben Java Basics - Anfänger-Themen 4
G Inhalt einer Textdatei in ein Array einlesen Java Basics - Anfänger-Themen 2
J Inhalt einer Application speichern Java Basics - Anfänger-Themen 3
G Inhalt einer Hashtable ausgeben Java Basics - Anfänger-Themen 2
C Inhalt aus einer Array in eine andere Array kopieren Java Basics - Anfänger-Themen 2
C Aus Java eine Email wo der Body den Inhalt aus einer .... Java Basics - Anfänger-Themen 6
I String ersetzen, der Inhalt enthält Java Basics - Anfänger-Themen 4
F Erstellen zweier Objekte mit dem selben Inhalt Java Basics - Anfänger-Themen 1
N den inhalt eines array per funktion ausgeben Java Basics - Anfänger-Themen 8
X TextField-Inhalt mit Button in .txt-Datei speichern Java Basics - Anfänger-Themen 16
J Datentypen CSV to DB Leere Zellen in CSV mit Inhalt? Java Basics - Anfänger-Themen 11
H Universitätsaufgabe String inhalt Kontrollieren Java Basics - Anfänger-Themen 9
karlmasutra OOP Inhalt eines Array ausgeben lassen Java Basics - Anfänger-Themen 8
C Vector-Inhalt in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 6
L Namensliste mit Array zeigt nicht den gewünschten Inhalt Java Basics - Anfänger-Themen 12
F Variablen JTextField-Inhalt kann nicht mit String abgeglichen werden Java Basics - Anfänger-Themen 2
Zeekay Development Methoden Methoden Inhalt Abhängig vom Objekt? Java Basics - Anfänger-Themen 9
B BufferedReader gibt Datei-Inhalt doppelt aus Java Basics - Anfänger-Themen 3
M Ordner mit Inhalt löschen Java Basics - Anfänger-Themen 7
R getrennte Objekte aus Klasse erstellen : warum Inhalt dann gleich ? Java Basics - Anfänger-Themen 2
Silvascus Inhalt eines externen Textdokuments an einen String übergeben Java Basics - Anfänger-Themen 2
K Variablenname soll der Inhalt vom String sein Java Basics - Anfänger-Themen 2
O Zip-File Inhalt einlesen Java Basics - Anfänger-Themen 3
S Inhalt aus anderen Klassen verwenden Java Basics - Anfänger-Themen 1
M Wie gebe ich den Inhalt aus? Java Basics - Anfänger-Themen 17
P Seite auf Inhalt prüfen Java Basics - Anfänger-Themen 2
U Inhalt von JTextfield an andere Klasse weitergeben Java Basics - Anfänger-Themen 13
Uzi21 jTable / Inhalt speichern Java Basics - Anfänger-Themen 2
T CSV auf Inhalt und Zeilen überprüfen Java Basics - Anfänger-Themen 2
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
T Aufgerufene Methode Inhalt der übergebenen Referenz Java Basics - Anfänger-Themen 5
1 den Inhalt eines Arrays umdrehen Java Basics - Anfänger-Themen 11
A Leere Datei wird ohne Inhalt geschrieben, obwohl Inhalt geschrieben wurde. Java Basics - Anfänger-Themen 4
K Inhalt in den Zwischenspeicher legen Java Basics - Anfänger-Themen 2
kaoZ Input/Output Verzeichnis Inhalt in combobox ausgeben Java Basics - Anfänger-Themen 8
J Inhalt in einem Text-File finden und in ein Array schreiben Java Basics - Anfänger-Themen 5
R Inhalt vom String größer oder kleiner als Java Basics - Anfänger-Themen 16
F Erste Schritte if Inhalt Java Basics - Anfänger-Themen 7
C Erste Schritte String-INhalt in TXT ausgeben Java Basics - Anfänger-Themen 7
U OOP Array vom Typ String > Inhalt ausgeben Java Basics - Anfänger-Themen 8
M Array Inhalt kopieren Java Basics - Anfänger-Themen 3
O Container Inhalt auslesen Java Basics - Anfänger-Themen 2
M String auf Inhalt überprüfen Java Basics - Anfänger-Themen 11
H Mehrdimensionales Array - Inhalt auf Null überprüfen Java Basics - Anfänger-Themen 5
B Datentypen Inhalt von Objekten miteinander vergleichen Java Basics - Anfänger-Themen 2
R Erste Schritte Objekte mit anderen Objekten als Inhalt Java Basics - Anfänger-Themen 4
F Kopieren von Ordner sammt inhalt Java Basics - Anfänger-Themen 5
I Datei einlesen, Inhalt in MAP ablegen Java Basics - Anfänger-Themen 10
E Inhalt von Option Feldern auslesen? Java Basics - Anfänger-Themen 2
Helgon Inhalt - Aktualisierungs Problem Java Basics - Anfänger-Themen 7
T Inhalt Gridlayout wird nicht angezeigt Java Basics - Anfänger-Themen 6
O Variablen Variablen Inhalt von Webseite einlesen!? Java Basics - Anfänger-Themen 2
M Inhalt eines Strings um eins hochzählen Java Basics - Anfänger-Themen 19
M String Inhalt wird überschrieben (Subklassen verwenden denselben String) Java Basics - Anfänger-Themen 13
Gossi Input/Output Datei Lesen, inhalt abfragen, speichern Java Basics - Anfänger-Themen 5
B jar Inhalt anzeigen Java Basics - Anfänger-Themen 5
D Textfile lesen/schreiben abhängig vom inhalt Java Basics - Anfänger-Themen 6
J Inhalt eines Arrays vergleichen? Java Basics - Anfänger-Themen 8
X Collections Inhalt von zwei Collections prüfen Java Basics - Anfänger-Themen 4
D jTable befüllen mit dynamischem Inhalt Java Basics - Anfänger-Themen 11
M Inhalt Textfeld prüfen Java Basics - Anfänger-Themen 4
H Java-Fenster ohne Inhalt Java Basics - Anfänger-Themen 2
B Datentypen Inhalt zum Iterator wieder aufrufen? Java Basics - Anfänger-Themen 10
E Inhalt zwischen zwei String auslesen? Java Basics - Anfänger-Themen 8
S Inhalt eines Vektors ausgeben Java Basics - Anfänger-Themen 2
F String-Inhalt als Datatype-Name Java Basics - Anfänger-Themen 5
M Tabelle mit immer sortiertem Inhalt Java Basics - Anfänger-Themen 5
S JFileChooser - Dateinamen vorschlagen/Inhalt der Ausgabe prüfen Java Basics - Anfänger-Themen 3
J JList Inhalt nach JButton Klick aktualisieren Java Basics - Anfänger-Themen 8
C Inhalt eines Strings in JLabel ausgeben? Java Basics - Anfänger-Themen 21
L Inhalt von JEditorPane löschen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen


Oben