variable überschreiben schlägt fehl

  • Themenstarter Themenstarter rd
  • Beginndatum Beginndatum

rd

Mitglied
Hallo und ein schönes neues Jahr

Folgendes Problem habe ich derzeit:


Ich möchte nach der Eingaben mehren strings mehere Bedingungen prüfen. Aufgrund der Menge würde dies mit .equals() sehr unübersichtlich werden. Aus diesen Grund möchte ich jeden String zu einen int zuweisen. Wobei dann 1 für true steht und 0 für false. Das würde ich gerne mit einer if Schleife umsetzen.

Damit nicht zu viele Variable verwenden werden müssen, wollte ich die Variable jeweils einmal für true oder false verwenden d.h. jede Eingabe soll nur einen int Variable erhalten. Welche durch eine If Schleife entsprechenden Wert bekommt.

Der Operator = bewirkt durch eine zuweisung - warum kann man hier nicht die variable x1 mehrfach einsetzen ?

Java:
if (s1.equals("an")) 
 {
   int x1 = 1;
 }
   else
   {
     int x1 = 0;
   }
 
Du deklarierst und initialisierst mit diesem Code jedes Mal eine neue Variable x1 vom Typ int, die aber nur innerhalb der geschweiften Klammern Gültigkeit hat. Lass das int weg und dann müsste es hinhauen.
 
Zuletzt bearbeitet:
Moin,

Java:
if (s1.equals("an")) 
 {
   int x1 = 1;
 }
   else
   {
     int x1 = 0;
   }


Zuerst mal: if-schleife.de

dann: warum int und nicht boolean ???:L

weiterhin: was Gucky meint, ist nicht einfach weg lassen, sondern VOR der Abfrage deklarieren
Java:
boolean isAn = false;
if( s1.equals("an") ) 
{
    isAn = true;
}

Gruß
Klaus
 
Zuletzt bearbeitet:
Hallo

Ich wollte eine int Variable verwenden, damit ich mit den Werten 1 und 0 die nächsten Vergleichen durchführen wollte und mit den Operatoren ==, != , &&.

Zur veranschaulichung:
Java:
if (s1||s2 && (s3 && s4 && s5 && s6 && s7) )

Gruß
 
Zuletzt bearbeitet:
Moin

Ich wollte eine int Variable verwenden, damit ich mit den Werten 1 und 0 die nächsten Vergleichen durchführen wollte und mit den Operatoren ==, != , &&.

Zur veranschaulichung:
Java:
if (s1||s2 && (s3 && s4 && s5 && s6 && s7) )
Gerade so wäre aber eine bool'sche Variable das Gegebene ....

Zudem bindet (wenn ich mich recht erinnere) das && stärker als das || !
Deswegen möchtest Du wahrscheinlich dies hier haben, oder ?
Java:
if( (s1||s2) && (s3 && s4 && s5 && s6 && s7) )

Aber vlieelicht solltest Du mal genauer beschrieben, was Du eigentlich genau tun möchtest .....

Gruß
Klaus
 
Mahlzeit

Es werden im ersten Fall 7 Eingaben abgefragt, welche mit on bzw off beantwortet werden. Es soll eine wahre Aussage erfüllt wenn folgende Bedingungen erfüllt werden:

Ziel ist es: wenn eine bzw mehrer Bedingung(en) erfüllt werden, soll eine Ausgabe "A" erfolgen sonst Ausgabe "B".

Wenn ich mich nicht verschrieben haben müsste die Bedingung in einer Zeile so aussehen:

Java:
(s1^s2) || (s1==s2) && (((s3^s4) || (s3==s4)) || s5 && s7  ) && (s6 == on)

edit:

Ich glaube so müsste es richig sein:

Java:
(((s1=="on") || (s2=="on")) || ((s1=="on") && (s2=="on"))) && (((s3=="on") || (s4=="on")) || ((s3=="on") && (s4=="on")))
 
Zuletzt bearbeitet:
Strings werden aber nicht mit dem Gleichheitsoperator == verglichen sondern mit .equals. Sonst werden die Adressen im Speicher verglichen.
 
Servus

Schau mal was ich in den ersten Beitrag geschrieben habe ;-)

Aufgrund der Menge würde dies mit .equals() sehr unübersichtlich werden. Aus diesen Grund möchte ich jeden String zu einen int zuweisen. Wobei dann 1 für true steht und 0 für false. Das würde ich gerne mit einer if Schleife umsetzen.


Ich wollte es gerne ohne .equals() versuchen und daher wollte ich true / false die Werte 0 / 1 zuweisen und dann prüfen.
 
Zuletzt bearbeitet:
Moin,

Ich glaube so müsste es richig sein:
Java:
(((s1=="on") || (s2=="on")) || ((s1=="on") && (s2=="on"))) && (((s3=="on") || (s4=="on")) || ((s3=="on") && (s4=="on")))
Nein, denn wie Gucky schon schrieb, MUSST Du Strings mit equals vergleichen 😳
Wenn Du Deine Bedingungen wie einfache Zustände prüfen willst, würde ich wirklich bool'sche Variablen nehmen ... dazu sind schließlich da 😉

Schau mal was ich in den ersten Beitrag geschrieben habe ;-)
dito:
www.if-schleife.de

Gruß
Klaus
 
Zuletzt bearbeitet:
Servus

Alles klar. Das bei strings .equals() verwenden müssen ist klar. Es ist möglich strings in int zu casten. Aus diesen Grund wollte ich den string a von der eingabe in einen neuen string b zuweisen, wobei hier dann eine 1 oder 0 zugewiesen werden soll durch eine if abfrage. Der neue string b beinhaltet dann eine zahl. Durch casten wollte ich das dann als int variable haben und dann müsste man das ohne .equals(), da es kein string mehr ist.


Grüße
 
Zuletzt bearbeitet:
Moin,

Alles klar. Das bei strings .equals() verwenden müssen ist klar. Es ist möglich strings in int zu casten. Aus diesen Grund wollte ich den string a von der eingabe in einen neuen string b zuweisen, wobei hier dann eine 1 oder 0 zugewiesen werden soll durch eine if abfrage. Der neue string b beinhaltet dann eine zahl. Durch casten wollte ich das dann als int variable haben und dann müsste man das ohne .equals(), da es kein string mehr ist.
Schon klar ... aber ist doch von hinten durch Brust ins Auge 😀

Du erstellt aus dem Literal A das Literal B (was alleine schon problematisch ist) und castest dann nach C. Und nur, um dann mit C den Vergleich anzustellen, den Du zu Beginn schon sofort mit A machen könntest ???:L
Du hast also für jeden Vergleich gleich zwei überfüssige Aktionen !!

Was ist denn nach Deiner Meinung am equals so böse ???:L

EDIT:
und selbst wenn, dann wäre doch der Vorschlag von turtle
Java:
boolean isAn = s1.equals( "an" ) ;
genau das Gegebene

Gruß
Klaus
 
Zuletzt bearbeitet:
Abend

Zur Erklärung: 🙂

Das strings mit equals vergleichen werden ist mir bewusst. Ich habe nur aus interesse die Aufgabe ohne equals lösen wollen - auch wenn das totaler unsinn ist, da gebe ich Euch recht.

Ich wollte nur aus eigene Interesse etwas schauen, ob das so klappt wie ich es mir überlegt habe. Und zwar nach der Eingabe von s1, diese eine Zahl als String erhalten soll. Die Zahl würde dann durch eine if Abfrage festgelegt werden. Somit wäre im neuen String eine zahl und das casten wäre dann nicht mehr das Problem gewesen. Das hätte ich mit x = Integer.parseInt(string); entsprechend realisiert.

mfg
 
Moin,

ach so ... das hättest Du ja auch gleich sagen können :autsch:

Ist denn jetzt alles geklärt oder hast Du noch Fragen ??

tschüss
Klaus
 

Neue Themen


Zurück
Oben