Name eines boolean ausgeben (nicht den Wert)

Super Gogeta

Mitglied
Hallo!

Ich versuche gerade erfolglos herauszufinden, ob und wie es möglich ist, den Namen eines boolean auszugeben und nicht nur true bzw. false.

Beispiel:

Java:
for (boolean wert : ende) {
	if (wert) {
		String name = new Boolean(wert).toString(); //das schreibt ja nur true rein, soll aber den Variablennamen schreiben, weil ich den dann weiter übergeben muss
	}
}

Lässt sich das überhaupt machen?
 
B

bygones

Gast
und diese sind Schall und Rauch ohne jegliche Bedeutung....

warum brauchst denn "wert" ?
 

Super Gogeta

Mitglied
Ok, etwas schlecht geschrieben scheinbar.

Wir haben sowas:

Java:
boolean eins = true; boolean zwei = false;
wert = new boolean[] {eins, zwei};

for (boolean wert : ende) {
    if (wert) {
        String name = ... // da soll dann z.B. in name "eins" stehen, weil genau das dann wieder für anderes benutzt wird, was ja auch klappt, sofern ich den da hin bekomme
    }
}

Geht das?
 
B

bygones

Gast
nein und ich versteh immer noch nicht was du bezwecken willst, dass [c]String name = "eins"[/c] ist...

ich bezweifle dass "wieder fuer anderes benutzt wird" wirklich so gebraucht wird, was immer das sein mag.

Wenn du erklaerst was genau der gesamte Kontext ist, so kann man konkretere Hinweise/Tipps geben.
 

nrg

Top Contributor
mal abgesehen davon, dass das codestück totaler stuss ist, stelle ich dir nochmal die frage: was willst du damit bezwecken?
 

faetzminator

Gesperrter Benutzer
Das klingt mir ganz danach, als würdest du irgendwelche Properties (Einstellungen) speichern und ausgeben wollen. Wenn ja, dann könnte dir eine Map weiterhelfen. Da kannst du dann auch im Programm die Properties einfach abfragen.
 

KOKser

Aktives Mitglied
Ok, etwas schlecht geschrieben scheinbar.

Wir haben sowas:

Java:
boolean eins = true; boolean zwei = false;
wert = new boolean[] {eins, zwei};

for (boolean wert : ende) {
    if (wert) {
        String name = ... // da soll dann z.B. in name "eins" stehen, weil genau das dann wieder für anderes benutzt wird, was ja auch klappt, sofern ich den da hin bekomme
    }
}

Geht das?

Servus,

dir geht es sicher darum raus zubekommen ob jetzt der erst oder der zweite Wert auf true gesetzt wurde oder?

Versuch es mal hiermit.
Java:
boolean eins = true; boolean zwei = false;
wert = new boolean[] {eins, zwei};

for (int i = 0;i<wert.length;i++) {
    boolean value = wert[i];
     if (value) {
            System.out.println("Treffer bei Index: "+(i+1));
    }
}
 

faetzminator

Gesperrter Benutzer
... ausser, dass du statt [c]i[/c] fälschlicherweise [c](i+1)[/c] ausgibst. Anders würde es aussehen, wenn du [c](i + 1) + ". Element"[/c] ausgeben würdest.
 

KOKser

Aktives Mitglied
(i+1) war schon absichtlich so gewählt damit er nicht drüber Stolpert das das erste Element den Index 0 hat, ich werde mich bessern und nie wieder das Wort Index benutzen :p .
 

faetzminator

Gesperrter Benutzer
nrg, aber [c]Element mit Index 0[/c] entspricht nunmal dem [c]1. Element[/c] :)
Stell dir vor, du würdest von einem User die Fehlermeldung "some Problem xy [Index 45]" kriegen, aber es würde das Element mit Index 44 betreffen. Würdest du dich da nicht aufregen? Sonst suchst du zuerst minutenlang am falschen Ort...
 

Super Gogeta

Mitglied
Na gut, dann hole ich noch weiter aus.

Java:
for (boolean wert : ende) {
			if (wert) {
				String string = ... //hier bräuchte ich jetzt den Variablennamen als String
				if (ziel.equals("bEins")) {
					bEins.setIcon(getImage(string));
					if (lEins.getActionCommand().equals(string + "1")) {
						lEins.setIcon(nothing);
					} else if (lZwei.getActionCommand().equals(string + "1")){
						lZwei.setIcon(nothing);
					} else if (lDrei.getActionCommand().equals(string + "1")){
						lDrei.setIcon(nothing);
					} else if (lVier.getActionCommand().equals(string + "1")){
						lVier.setIcon(nothing);
					} else if (lFünf.getActionCommand().equals(string + "1")){
						lFünf.setIcon(nothing);
					}
					neu = ziel;
					bEins.setName(string);
					bEins.setActionCommand(string + "1");
					lEins.removeActionListener(this);
					bEins.removeActionListener(this);
				}
			}
}

Wie man sieht, baut so ziemlich alles auf den gleichen Namen auf bzw. werden darüber zugewiesen. Daher wollte ich das nun so machen, um entsprechend dem true-Wert (sind später mehr boolean, aber nur einer ist true) verschiedenes zu ändern.
 

pro2

Bekanntes Mitglied
Ich versteh das nicht.. du musst unbedingt dein Konzept überdenken. Wie oben bereits geschrieben haben die Variablen für den Computer keinen Namen.. du kannst natürlich ein Array/Map mit Strings noch nebenbei erstellen, sodass du immer den String passend zu dem boolean speichert. Sinn dahinter wage ich zu bezweifeln^^
 

irgendjemand

Top Contributor
verstehe den sinn zwar selbst auch nicht ... aber wenn man GANZ WEIT ausholt könnte man was über reflections basteln ... aber ob das so seinen sinn hat wage ich auch zu bezweifeln ...

würde TO hier auch eine grundlegende überarbeitung seines konzeptes empfehlen
 

Super Gogeta

Mitglied
Sinnvoll oder nicht, es soll funktionieren, nichts anderes ist als Einsteiger wichtig.

Mit der Map klappt es sehr gut, danke dafür. Was mich jetzt noch beschäftigt, ist, wie ich den abgefragten Boolean aus der Map heraus auf false/true setzen kann.

Java:
map.get(wert) = false;

Das funktioniert ja dummerweise nicht. Ich kann natürlich am Ende der Aktionen alle möglichen Boolean manuell auf false setzen, aber das könnte ich auch mit allem anderen tun und das bringt´s ja nicht wirklich.
 
S

SlaterB

Gast
du müsstest schon wieder map.put() aufrufen,
oder als Value in der Map ein veränderlichers Objekt speichern, z.B. boolean[1], dann ginge
> map.get(wert)[0] = false;

schön ist aber auch anders
 
A

Alle besetzt

Gast
Könnte man sich nicht ein eigenes Object schreiben?

Java:
public class NamedBoolean{

  private final Sring name;
  private boolean value; 

  public NamedBoolean(String name){
    this.name = name;
  }

  public String getName(){
    return name;
  }

  public void setV...

  @Override
  public String toString(){
    return NamedBoolean.class.getName()+"["+name+", "+value+"]";
  }

...
 

faetzminator

Gesperrter Benutzer
bygones, wenn du dann aber Zugriff in [c]O(1)[/c] auf den Key haben willst (weil es eben irgendwelche Prefs o.ä. sind), dann musst du schlussendlich auch wieder eine [c]Map<String, NamedBoolean>[/c], oder besser [c]Map<T, NamedBoolean<T>>[/c], verwalten...
 

Voltaire81

Mitglied
Ne Collection ist schon mal was feines für sowas. Klar kann man eine eigene Klasse schreiben für die Properties aber in einem solchen Fall ist es vielleicht ja eine Option die Klasse Properties zu nutzen. Java is ja nich blöde. Gibts doch alles schon. :)

Und nur zur Vollständigkeit und der Korrektheit zuliebe. Natürlich ist es möglich sich den Namen einer Variablen ausgeben zu lassen. Geht nicht gibt's nicht.
 
A

Alle besetzt

Gast
Ich würde aber lieber ein Array als eine Map benutzen.
Warscheinlich einfach weil mir Strings als key zuwider sind.
Ich benutze bei sowas lieber Integer. und dann könnte man auch eine Array nehmen.

Ich Programmiere zwar auch noch nicht so lange aber bei mir würde das so aussehen:

Code:
NamedBoolean nBoolean = new NamedBoolean[x];

Hat die verwendung einer Map<K,O> irgendwelche vorteile die ich nich (er)kenne?
 
A

Alle besetzt

Gast
Und nur zur Vollständigkeit und der Korrektheit zuliebe. Natürlich ist es möglich sich den Namen einer Variablen ausgeben zu lassen. Geht nicht gibt's nicht.

Ich habe es noch nie gebraucht. Aber wie würde das functionieren?
Und vorallem hätte das überhaupt einen Sinn?

Java:
boolean b1 = true;
boolean b2 = b1;

geheimnisVolleVariablenNamenAusgebeFunction(boolean b){
System.out.println(b.toName());  // Name: b !
}

Da sich so ein Name ja ändern kann.
 

faetzminator

Gesperrter Benutzer
@Voltaire81: [c]Properties[/c] ist eine Kindklasse von [c]Hashtable[/c] :) Allerdings sind dort IMHO alle Keys und Values Strings, da müsste man ein Bisschen etwas überschreiben.

@Alle besetzt: Klar, statt [c]"app.update.cert.requireBuiltIn"[/c] (ein Property als Beispiel von Firefox) würdest du lieber [c]634[/c] nehmen? Viel Spass :D
 

Voltaire81

Mitglied
@Voltaire81: [c]Properties[/c] ist eine Kindklasse von [c]Hashtable[/c] :) Allerdings sind dort IMHO alle Keys und Values Strings, da müsste man ein Bisschen etwas überschreiben.

Ist mir bewusst, danke. Es ging mir bei dem Vorschlag auch weniger um die zusätzliche Funktionalität (der Fall hier ist trivial) sondern das Anwenden des richtigen Konstrukts... Ich bin nun seit 10 Jahren unterwegs als IT-Consultant und bereinige ganz üblen Code. Dieses 'reinviting the wheel' ist dabei eines der häufigsten Probleme...
 
A

Alle besetzt

Gast
warum dass denn ?

Habe ich mir so angewöhnt.
Ein int ist eindeutig, ein String sind "mehrere ints".
Man kann
Code:
for(in i = 0; i < (int)x;i++);
schreiben.
Code:
for(String s = "key1"; s < ?; s++
wird schwieriger.

Alle besetzt
 

Voltaire81

Mitglied
Ich habe es noch nie gebraucht. Aber wie würde das functionieren?
Und vorallem hätte das überhaupt einen Sinn?

Java:
boolean b1 = true;
boolean b2 = b1;

geheimnisVolleVariablenNamenAusgebeFunction(boolean b){
System.out.println(b.toName());  // Name: b !
}

Da sich so ein Name ja ändern kann.


Sorry, gerade übersehen...
Was das für einen Sinn macht lässt sich so ad hoc nicht sagen. Ich hatte Anwendungsfälle. Da ging es aber eher um das Ermitteln von Methoden-Namen... In dem konkreten Fall hier keine....
Die 'geheimnisVolleVariablenNamenAusgebeFunction' :

Java:
    void geheimnisVolleVariablenNamenAusgebeFunction(){
        Field[] f = this.getClass().getDeclaredFields();    
        for (int i = 0; i < f.length; i++) {
            Field field = f[i];
            System.out.println(field.getName());
        }
    }
 

faetzminator

Gesperrter Benutzer
Habe ich mir so angewöhnt.
Ein int ist eindeutig, ein String sind "mehrere ints".
Man kann
Code:
for(in i = 0; i < (int)x;i++);
schreiben.
Code:
for(String s = "key1"; s < ?; s++
wird schwieriger.

Diesen Anwendungsfall gibts bei Maps auch nicht. Entweder willst du einen Wert holen [c]V get(K)[/c], speichern [c]put(K, V)[/c], löschen [c]remove(K)[/c] oder mit [c]entrySet().iterator()[/c] über alles iterieren.
 
S

SlaterB

Gast
Ein String ist genauso eindeutig wie ein int. Wie kommst du drauf dass ein String nicht eindeutig ist?


mehrere Strings haben denselben hashCode(), das ist schon ein gewisser Punkt,
in einer Map bzw. allen ernsthaften Anwendungen für hashCode() wird aber danach noch equals geprüft
 
G

Gast2

Gast
Es gibt beliebig viele Strings, da ist es klar dass es beim hashCode() zu Kollisionen kommen muss.
Aber wie du schon sagst, das stört die Map ja nicht wirklich, entscheidend ist dann dass equals() richtig implementiert ist. Und das ist beim String denke ich der Fall.
Das ist für mich jetzt kein Argument String als HashMap Key zu verteufeln ;)
 
A

Alle besetzt

Gast
Java:
    void geheimnisVolleVariablenNamenAusgebeFunction(){
        Field[] f = this.getClass().getDeclaredFields();    
        for (int i = 0; i < f.length; i++) {
            Field field = f[i];
            System.out.println(field.getName());
        }
    }


Habe kein Eclipse hier, aber laut JavaDocs gibt das ja die Namen sämtlicher Variablen in DER classe aus?
Ich werds nacher zuhause mal Testen.

Ein String ist genauso eindeutig wie ein int. Wie kommst du drauf dass ein String nicht eindeutig ist?

Das tut mir leid, DAS sollte jetzt nicht der Aufhänger für den Thread werden.
Und meine erklärung ist rein Subjektiv:
Ich kann mir Zahlen einfach besser Merkenn, kenne von [STRIKE]fast[/STRIKE] jedem/r bei uns in der Klasse die Telephon Number und nur von ungefähr der Hälfte den Namen ;(.

@Alle besetzt: Klar, statt "app.update.cert.requireBuiltIn" (ein Property als Beispiel von Firefox) würdest du lieber 634 nehmen? Viel Spass
;)

Wenn die Strings allerdings wie hier
Code:
"app.update.cert.requireBuiltIn"
einen logischen aufbau haben geht das ja. Aber woher will ich wissen das es diesen Baum an *Property* wirklich gibt? Bei zahlen kann man immer ++ nehmen.
 

Andi_CH

Top Contributor
mehrere Strings haben denselben hashCode(), das ist schon ein gewisser Punkt,
in einer Map bzw. allen ernsthaften Anwendungen für hashCode() wird aber danach noch equals geprüft

Der Hashcode kann unmöglich eindeutig sein, wenn er weniger Bits hat, als die Daten im Objekt zusammengezählt. Diese Erkenntnis ist übrigens so alt wie die Begriffe Checksumme, Parity und ähnliche ;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Name eines JMenue als Parameter übergeben Java Basics - Anfänger-Themen 20
J Parameter (Methode) -> Name eines Objekt Java Basics - Anfänger-Themen 3
D Name eines Terminals herausfinden Java Basics - Anfänger-Themen 3
D Name eines Objekts ermitteln Java Basics - Anfänger-Themen 5
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
B JaxB - Unique Name updaten / Referenzen in XML Java Basics - Anfänger-Themen 0
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
F Auto String mit Array Name aus Datei... oder so ähnlich Java Basics - Anfänger-Themen 4
E gleicher Name in der Basisklasse und in der Subklasse Java Basics - Anfänger-Themen 45
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
K File-Name Vergleich Java Basics - Anfänger-Themen 2
J javax.servlet.ServletException: Name is null Java Basics - Anfänger-Themen 7
D jsoup get class name mit leerzeichen Java Basics - Anfänger-Themen 7
J ArrayList Name mit String erstellen Java Basics - Anfänger-Themen 8
B Get property field von Name Java Basics - Anfänger-Themen 9
M Objekt Name für MethodenAufruf nachträglich zuweisen? Java Basics - Anfänger-Themen 2
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
L Name im Array suchen Java Basics - Anfänger-Themen 12
K Mit Scanner aus einer txt Datei lesen und jede Person mit name, vorname, geburtsdatum speichern Java Basics - Anfänger-Themen 5
M Name der Komponete/Variabel/Methode Java Basics - Anfänger-Themen 5
I Spieler Name eintragen und Random Gewinner Java Basics - Anfänger-Themen 4
D Taskmanager Name Java Basics - Anfänger-Themen 2
I JTree, Root-Name ändern Java Basics - Anfänger-Themen 4
T Erste Schritte Elemente finden, deren Name erst "zusammengesetzt" wird Java Basics - Anfänger-Themen 8
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
D Name einer Variable als String nutzen Java Basics - Anfänger-Themen 13
T Name des Objektes OOP Java Basics - Anfänger-Themen 4
O String name mit fortlaufender Nummer Java Basics - Anfänger-Themen 14
Y ENUM auslesen (Name des ENUM als Variable) Java Basics - Anfänger-Themen 4
D Mysql schauen Name bereits existiert Java Basics - Anfänger-Themen 7
E Java Name von Exe festlegen? Java Basics - Anfänger-Themen 7
T brauche den pfad Name! Java Basics - Anfänger-Themen 2
F String-Inhalt als Datatype-Name Java Basics - Anfänger-Themen 5
D Methode anhand deren Name aufrufen Java Basics - Anfänger-Themen 4
N Name zu sehr ähnlich??? Java Basics - Anfänger-Themen 12
K Datentypen Full qualified Name dynamisch gestalten Java Basics - Anfänger-Themen 7
E Welcher Package Name bei Eclipse/Android? Java Basics - Anfänger-Themen 2
H2SO3- name der klasse ausgeben Java Basics - Anfänger-Themen 6
-horn- public static double[][][] NAME() nur per RETURN Wertrückgabe möglich? Java Basics - Anfänger-Themen 20
Z objekt erstellen von canonical name einer klasse Java Basics - Anfänger-Themen 6
A Klasse importieren wenn 2 mal gleicher Name Java Basics - Anfänger-Themen 2
O DocumentListener -> Name des JTextFields bekommen Java Basics - Anfänger-Themen 2
G Name der Instanz einer Klasse. Java Basics - Anfänger-Themen 2
X Der Name des jars finden? Java Basics - Anfänger-Themen 8
J Objekt-name in Array speichern Java Basics - Anfänger-Themen 12
B jar name ermitteln Java Basics - Anfänger-Themen 6
X Ordner mit Tageszeit als Name anlegen Java Basics - Anfänger-Themen 5
J ArrayListen mit Name und Vater an JTree übergeben Java Basics - Anfänger-Themen 3
T Rechner-Name abfragen Java Basics - Anfänger-Themen 6
K java.lang.NoClassDefFoundError: Klasse (wrong name... Java Basics - Anfänger-Themen 17
V mehrere Instanzen gleicher Name möglich? Java Basics - Anfänger-Themen 3
G XML nächstes Child element (gleicher name) Java Basics - Anfänger-Themen 5
A String Array: Suche nach Name -> Wert? Java Basics - Anfänger-Themen 3
G name vom objekt Java Basics - Anfänger-Themen 8
B Name und PLZ begrenzen Java Basics - Anfänger-Themen 3
K Objekte erstellen, wenn der Klassen-Name als String vorliegt Java Basics - Anfänger-Themen 4
M Kette- oder der Java Name Java Basics - Anfänger-Themen 2
G Name von java-Dateien, *.java Java Basics - Anfänger-Themen 9
G Name einlesen Java Basics - Anfänger-Themen 15
B Woher kommt der Name Java? Java Basics - Anfänger-Themen 4
O viele Name mit jeweils zugehörigen Status in .txt Speichern Java Basics - Anfänger-Themen 16
T System.getProperty("os.name") Java Basics - Anfänger-Themen 13
G File Name Case Sensitive Java Basics - Anfänger-Themen 2
R Welche Componente (Name)? Java Basics - Anfänger-Themen 2
S Variabler Name für ein Objekt einer Klasse? Java Basics - Anfänger-Themen 10
X Property user.name über Konsole verändern Java Basics - Anfänger-Themen 6
F Array Unterschied Typ name[] Typ[] name Java Basics - Anfänger-Themen 7
L Name für Objekt übergeben Java Basics - Anfänger-Themen 3
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
A Rekursive Implementation eines Codes Java Basics - Anfänger-Themen 4
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben