Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hy ich bin noch blutiger Anfänger

versuche mir aber ein paar Grundkenntnisse von Java anzueignen.

Hier mein Problem

public class Familie

{

public static void main(String[] args)

{

String Frau="Erna";

String Mann="Hans";

String Sohn="Jens";

String Tochter="niki";

if(Frau=="Erna")

if(Mann=="Hans")

if(Sohn=="Jens")

if(Tochter=="niki")

System.err.println("Frau: "+Frau+", Mann: "+Mann+", Sohn: "+Sohn+" und Tochter: "+Tochter+" sind eine Familie");

else

System.err.println("Das ist nicht die richtig Familie");

}

}

Mein Problem ist die Else wird nur ausgeführt wenn ich die Var Tochter ändere, ich möchte aber das es so ist egal welche Var[/] ich ändere soll der Text unter Else ausgegeben werden

Geschrieben

Hallo,

und bitte verwende nicht == zum Vergleich. Damit vergleichst Du Objektinstanzen. Das funktioniert hier wegen Javas Stringhandling und Deiner Initialisierung zufällig, ist aber nicht das, was Du willst. Du willst den Inhalt der Strings vergleichen. Das geht mit der Methode equals(Object o).

Peter

Geschrieben

Danke für die schnelle Antwort

das Kapitel mit den logischen Operator hätte ich mir doch genauer ansehen

sollen naja beschäftige mich mit java erst ne woche

Geschrieben

kannst mir das mit der equals Methode an meinem beispiel zeigen

weiss das nur so

String a = new String("Test");

String b = new String("Test");

if(a.equals(B))

System.out.println("Richtig")

else

System.err.println("Falsch")

aber nicht wie ich es in meinem anderen Fall benutzen soll

Geschrieben

Man stelle sich die Klasse Farbe vor:

class Farbe {

    private String farbe;


    public Farbe(String farbe) {

        this.farbe = farbe;

    }

}
Du erzeugst zwei Farben und vergleichst sie:
public void test() {

    Farbe rot1 = new Farbe("rot");

    Farbe rot2 = new Farbe("rot");

    System.out.println(rot1 == rot2);

}
Der Test ergibt false, da es zwei unterschiedliche Objekte sind. Allerdings sichern sie ja die gleiche Farbe, sollten bei einem Vergleich also auch als gleich erkannt werden. Daher gibt's in Object die Methode equals, die man überschreiben sollte. EDIT: OK. Post nicht ganz gelesen. In Deinem Fall. Hmm. Ich rate Dir, da Du blutiger Anfänger bist ;), eines der empfohlenen Bücher anzulesen um einen Einblick in das Programmieren zu bekommen. Zu Deinem Problem: Ein Vergleichsausdruck kann auch aus mehreren logisch verknüpften Ausdrücken bestehen:
public class Familie {

    public static void main(String[] args) {

        String Frau="Erna";

        String Mann="Hans";

        String Sohn="Jens";

        String Tochter="niki";


        if(Frau=="Erna" && Mann=="Hans" && Sohn=="Jens" && Tochter=="niki") {

            System.err.println("Frau: "+Frau+", Mann: "+Mann+", Sohn: "+Sohn+" und Tochter: "+Tochter+" sind eine Familie");

        } else {

            System.err.println("Das ist nicht die richtig Familie");

        }

    }

}

Geschrieben

Mhh eigendlich wollte ich ja nur , da ich blutiger anfänger bin ,

und eine menge Bücher momentan lese^^.

Möchte nur gerne wissen wie ich in meinem beispiel die Strings

mit hilfe von equals vergleichen kann

Geschrieben

Super danke

haut hin und funzt

da kann ich mich ja meiner nächsten herausforderung stellen

bzw.

Soll jetzt nicht dumm klingen.

Mein ziehl ist es eigendlich nur noch keine vordefinierten Var

zu benutzen sonder

Das ich in der Konsole selber meine Strings eingeben kann

das habe ich mit zahlen schon geschaft aber mit

einer Zeichenkette bzw einem namen gelingt es mir nicht wer kann

mir da einfach und verständlich helfen

Geschrieben


import java.io.*;


 public class Test

 {

   public static void main(String[] args)

   throws IOException

   {

     int a, b, c;

     BufferedReader din = new BufferedReader(

                          new InputStreamReader(System.in));


     System.out.println("Bitte Zahl a eingeben: ");

     a = Integer.parseInt(din.readLine());

     System.out.println("Bitte Zahl b eingeben: ");

     b = Integer.parseInt(din.readLine());

     c = a + b;

     System.out.println("a+b="+c);

   }

 }

Das ist jetzt als Übung als Zahleneingabe, so ist mir da alles klar bis auf
throws IOException
nun ist es so wenn ich die Var mit String Deklarieren möchte heist es halt immer Konvertierung von String auf int nicht möglich. An sich möchte ich das es so funzt wie mein erstes beispiel


public class Familie {

    public static void main(String[] args) {

        String Frau="Erna";

        String Mann="Hans";

        String Sohn="Jens";

        String Tochter="niki";


        if(Frau=="Erna" && Mann=="Hans" && Sohn=="Jens" && Tochter=="niki") {

            System.err.println("Frau: "+Frau+", Mann: "+Mann+", Sohn: "+Sohn+" und Tochter: "+Tochter+" sind eine Familie");

        } else {

            System.err.println("Das ist nicht die richtig Familie");

        }

    }

}

nur das halt die Var nicht vorgegeben sind sonder

die namen eingegeben werden und dann über If überprüft werden

und dann halt für true oder false entschieden wird

Wie gesagt ich stehe noch am Anfang

Geschrieben

Hier mal eine "Eingabe-Klasse", die uns mal gegeben wurde:


import java.io.*;


/**  Die Klasse enthält Eingabemethoden für die

 * Eingabe eines Strings mit und ohne Eingabeaufforderung

 *Eingabe eines Zeichens mit und ohne Eingabeaufforderung

 *Eingabe einer Zahl (integer) mit und ohne Eingabeaufforderung

 **/

public class eingabe {


    /**  Eingabe eines String ohne Eingabeaufforderung *******

     * die Methode liefert einen String zurück, der über Tastatur eingeben wurde **/


    public String eingString() {

        String sin = " ";

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        try {

            sin=in.readLine();

        }

        catch(IOException e) {

            System.out.println(e.toString());

        }

        return sin;

    }


    /**  Eingabe eines String mit Eingabeaufforderung *******

     * die Methode liefert einen String zurück, der über Tastatur eingeben wurde **/


    public String eingString(String s) {

        String sin = " ";

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        try {

            System.out.print(s);

            sin=in.readLine();

        }

        catch(IOException e) {

            System.out.println(e.toString());

        }

        return sin;

    }


    /**  Eingabe eines Zeichens ohne Eingabeaufforderung *******

     * die Methode liefert ein zeichen zurück, das über Tastatur eingeben wurde **/


    public char eingChar() {

        char cin = ' ';

        DataInputStream in = new DataInputStream(System.in);

        try {

            cin=in.readChar();

            System.out.print("..." + cin);

        }

        catch(IOException e) {

            System.out.println(e.toString());

        }

        return cin;

    }


    /**  Eingabe eines Zeichens mit Eingabeaufforderung *******

     * die Methode liefert ein zeichen zurück, das über Tastatur eingeben wurde **/


    public char eingChar(String s) {

        char cin = ' ';

        DataInputStream in = new DataInputStream(System.in);

        try {

            System.out.print(s);

            cin=in.readChar();

        }

        catch(IOException e) {

            System.out.println(e.toString());

        }

        return cin;

    }


    /**  Eingabe eines Integer ohne Eingabeaufforderung *******

     * die Methode leist einen String ein und wandelt ihn in int **/


    public int eingInt() {

        Integer i = new Integer(eingString());

        return i.intValue();

    }


    /**  Eingabe eines Integer mit Eingabeaufforderung *******

     * die Methode leist einen String ein und wandelt ihn in int **/

    public int eingInt(String s) {

        Integer i = new Integer(eingString(s));

        return i.intValue();

    }

}


Kannst dir das richtige rauskopieren.

Geschrieben


public class Main

 {

   public static void main(String[] args)

   throws IOException

   {

     String Mann;

     String Frau;

     String Kind;

     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));


     System.out.println("Wie heist der Mann: ");

     Mann = in.readLine();

     System.out.println("Wie heist die Frau: ");

     Frau = in.readLine();

     System.out.println("Wie heist das Kind: ");

     Kind = in.readLine();


     if(Mann.equals("Hans") && Frau.equals("Ella") && Kind.equals("Timm"))

    	 System.err.println(" JA "+Mann+" , "+Frau+" und "+Kind+" sind eine Familie ");


    	 else

    		 System.err.println("Sie sind nicht die richtige Familie");


   }


 }

So soweit bin ich jetzt erstmal gekommen

meine Frage was hat es mit throws IOException

aufsich

Geschrieben

Verstehst Du denn auch den Code, den Du geschrieben hast? Bitte nicht falsch verstehen. Ich will Dir nicht auf den Schlips treten, sondern nur wissen, ob Du Dir Grundlagen erarbeiten konntest.

Das mit der IOException ist ein wenig komplexer. Java hat Exception-Handling "eingebaut". Ein kleines Beispiel:

Integer.parseInt("Hallo");
Wie Du wohl schon weißt, kann die Methode parseInt(String) der Klasse Integer aus einem String (sprich Text) die Zahl lesen und diese zurückgeben (als int). Doch bei obigem Beispiel enthält der String keine Zahl, sondern tatsächlich Text. Jetzt ist die Frage, was die Methode denn zurückgeben kann. Der Rückgabebereich beschränkt sich ja auf den Wertebereich des Datentyps int. Also Zahlen von -Schlagmichtot bis +Schlagmichtot. Viele Programmierer würden bei obigem Aufruf eine 0 oder -1 zurückgeben. Doch das ist fachlich vollkommen verkehrt, da sie von den Rückgaben der korrekten Aufrufe:
Integer.parseInt("0");

Integer.parseInt("-1");
nicht zu unterscheiden sind. Und hier greift das Exception-Handling. Denn in diesem Fall würde die Methode eine "NumberFormatException" (weiß nicht mehr, wie sie richtig heißt) "werfen":
public static int parseInt(String s) throws NumberFormatException
Und diese kannst Du "abfangen":
try {

    Integer.parseInt("Hallo");

} catch(NumberFormatException e) {

    System.out.println("Bitte geben Sie eine Zahl ein!");

}

Sinn und Zweck des Ganzen ist es, daß Du als Programmierer auf Fehler reagieren kannst um dem Anwender bspw. die Möglichkeit zu geben, seine Eingaben zu korrigieren.

Und so ist es auch mit der IOException. Die signalisiert nur, daß ein Fehler bei der Datenübergabe aufgetreten ist. Würdest Du z. B. eine Datei auslesen und sie würde während dem Auslesen gelöscht werden, reagiert der Buffer mit dem Werfen eine IOException.

Geschrieben

Also verstehen und verstehen sind einerlei

Wenn ich ne einfache Main Klasse erzeugen soll

und sie mit ner einfachen For Schleife durchlaufen lasse kann ich das sicher erklären.

(Dazu gesagt ich beschäftige mich erst seit 2 Wochen mit Java und beine einzigen Vorkenntnisse belaufen sich auf Java)

Bei dem input beispiel ist es so

ich versuche das mal in meine Worte zu fassen



import java.io.*;            // Importieren des Paketes java.io


 public class Main             // Deklarieren der Klasse Main

 {

   public static void main(String[] args)     // Naja ne klasse erzeugen ???

   throws IOException                            // ??

   {

     String Mann;                                 // String Var Mann

     String Frau;                                  //   ... 

     String Kind;                                  // ....

     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));


     System.out.println("Wie heist der Mann: ");    // Text wird ausgegeben

     Mann = in.readLine();                                 // ???

     System.out.println("Wie heist die Frau: ");     //  Text ...

     Frau = in.readLine();

     System.out.println("Wie heist das Kind: ");

     Kind = in.readLine();


     if(Mann.equals("Hans") && Frau.equals("Ella") && Kind.equals("Timm"))

    	 System.err.println(" JA "+Mann+" , "+Frau+" und "+Kind+" sind eine Familie ");  // If anweisung mit True false entscheidung ansonsten else Vergleich über equals


    	 else

    		 System.err.println("Sie sind nicht die richtige Familie");

             

So ich weiss die meisten haben mehr ahnung sicher

b ich bin keiner habe einen Computer und schon kann ich programmieren

nein ich will lernen , kann ich aber nur wenn ich logisch verstehe

war schon nicht so einfach aus der vorlage mit der String sache das richtige zu

machen das das ja nícht einfach mit copy past geht

da ja dann die Main klasse fehlt hat.

usw

Geschrieben

Hmm. Achso. Aber Dir das alles zu erklären, würde den Rahmen hier sprengen, denn Java bietet einiges mehr. Alleine die Erklärung der OOP würde schon einiges verschlingen und das ist eines der Grundkonzepte von Java.

Daher würde ich Dir zur Lektüre eines der empfohlenen Bücher raten. Ich habe von denen allerdings nur "Java ist auch eine Insel" gelesen, daher kann ich nichts über die anderen sagen. Jedenfalls reicht es, wenn Du Dir zu Anfang mal die ersten Kapitel anschaust. Da wird schon einiges erklärt.

Geschrieben

Was ich noch nicht so ganz verstehe ist

Alos ich erzeuge die Datei Main

public class Main

dann Deklariere ich die public static void main(String[] args)

main Methode {

Da gebe ich meinen Methoden Rumpf ein }

gehen wir mal davon aus ich will ein einfaches Farge antwort Programm erzeugen


   public class Antwortspiel

{

  public static void main(String[] args)

  throws IO Exception


     String User;

     Strring JaNein;

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));  // was da passiert weiss ich noch nicht


        System.out.println("Hallo bitte gebe deinen Spieler Namen ein: ");

     User = in.readLine();   // hier kann man seinen Namen eingeben und weiter ??

System.out.println("Hallo "+User+" das ist ein Spiel willst du Spielen \n Ja/nein)


    JaNein = in.readLine() // Ja nein Eingeben 

    if(JaNein.equals("Ja")

      So hier sollte das in die Methode gewechselt wo das spiel weiter geht             WIE ??  ;

   else

     So hier sollte in die die Methode gewechselt werde die alles Beendet


ich möchte hier keine fertigen Quelltexte habe sonder

eine Logische erklärung habe leider keinen Lehrer :)

Geschrieben

Ich arbeite mit zwei büchern , mir ist schon klar das ich nicht in 4 Wochen

alles lernen kann oder Doch ??? ^^

mir reicht es eigendlich wenn ich abundzu bei einem problem wo ich hänge hilfe bekomme

Geschrieben

if(JaNein.equals("Ja")

So hier sollte das in die Methode gewechselt wo das spiel weiter geht WIE ?? ;

Es gibt keinen eindeutigen Weg.

Ein objektorientierter Ansatz wäre zum Beispiel:


if(jaNein.equals("Ja"){

  Spiel spiel = new Spiel();

  spiel.starteSpiel(user);

}

Gruß Jaraz

PS: Variablen und Methoden bitte mit kleinen Buchstaben beginnen lassen. Klassen wie geschehen, aber mit großen Buchstaben.

Geschrieben

OK. Sicher helfen wir Dir hier bei dem ein oder anderen Problem.

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));  // was da passiert weiss ich noch nicht
Es ist nicht schlimm, das nicht zu verstehen. In dem von mir erwähnten Buch ist diesem Thema ein ganzes Kapitel gewidmet. Um das verstehen zu können, mußt Du Dich erst mal in der OOP zurechtfinden. Für den Moment reicht es, zu wissen, daß Du hiermit ein Objekt erzeugst (namens "in"), mit dem Du auf der Konsole eine Benutzereingabe realisieren kannst, was Du hier
User = in.readLine();   // hier kann man seinen Namen eingeben und weiter ??
ja auch tust. Die Methode readLine() liest Zeichen ein, bis der Anwender ENTER betätigt. Gut, ganz so simpel ist es nicht, aber das reicht fürs erste.
if(JaNein.equals("Ja")

      So hier sollte das in die Methode gewechselt wo das spiel weiter geht             WIE ??  ;
Na zum Beispiel so:
public class Antwortspiel {

  public static void main(String[] args) throws IO Exception {

    String user;

    String jaNein;

    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));


    System.out.println("Hallo bitte gebe deinen Spieler Namen ein: ");

    User = in.readLine();

    System.out.println("Hallo "+User+" das ist ein Spiel willst du Spielen \n Ja/nein);

    jaNein = in.readLine();


    if(jaNein.equals("Ja")) {

      startGame();

    } else {

      System.out.println("Spieler wollte gar nicht spielen ...");

    }

    System.out.println("Spiel wird beendet ...");

    System.exit(0);

  }


  private static void startGame() {

    System.out.println("Spiel gestartet ...");

  }

}

Geschrieben
Es gibt keinen eindeutigen Weg.

Ein objektorientierter Ansatz wäre zum Beispiel:


if(jaNein.equals("Ja"){

  Spiel spiel = new Spiel();

  spiel.starteSpiel(user);

}

Gruß Jaraz PS: Variablen und Methoden bitte mit kleinen Buchstaben beginnen lassen. Klassen wie geschehen, aber mit großen Buchstaben.
Wenn ich es richtig verstehe wird bei

Spiel spiel = new Spiel();

wird die Variable spiel deklariert und initialisiert und dem Objekt Spiel zugeordnet oder ?? aber was passiert bei

spiel.starteSpiel(user);

Geschrieben

@Newlukai

Danke das war genau das was ich erstmal brauchte

das mit dem private static void NAME()

{}

so komme ich erstmal weiter jetzt tippe ich erstmal und festige

das OOP ist die nächste etappe

Geschrieben

Kann man

das so machen das ich ein Parr grund VAr und das

BufferedReader in so ne art Paket packe und in den Methoden aufrufen

kann so muss ich sonst in jeder Methode das ganze

throws IO Exception

und BufferedReader neu eingeben

und die Namens Var vom anfang ist ja auch wech

Geschrieben

Du brauchst eigentlich nur die Klasse, die ich gepostet habe in eine Datei namens eingabe.java zu kopieren. (Du kannst/musst mal hier noch den Namen groß schreiben, sowohl in der Datei als auch in der Klasse) und dann einfach in jedem Programm mittels:

Eingabe eing = new Eingabe();

String hans = eing.eingString()

aufrufen um z.B. einen String einzugeben.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...