Java Variable Namen falsch?

D

DefconDev

Gast
Hallo, bin kompletter neuanfänger, und verstehe das problem meines codes nicht, laut des Editors ist meine if anweisung keine boolean, also if (a=5).

import java.io.*;

public class Entscheidungsbaeume {
public static void main(String args[])
throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

System.out.println("Eingabe der Min. Zahl");
double a;
a = Double.parseDouble(in.readLine());



if(a=5){
Sytem.out.println("sehr gut");
}
else {
System.out.println("sehr schlecht");
}

}

}
 
Du musst if(a==5) schreiben.
= nimmt man für zuweisungen und == zum vergleichen.
 
ja danke, kennt jemand einen glossar über die geläufigsten befehle mit deutscher erläuterung für java?

tu mich echt schwer, sachen einfach nur abzutippen und nicht zu hinterfragen, wie zb. der befehl "BufferedReader in = new BufferedReader..."
 
Die Dokumentation der Java API auf deutsch? Hm...wüsste ich nicht.

Zu Beginn hat mir folgendes Buch gut geholfen

http://www.galileocomputing.de/2069?GPP=opjiVIII


Kann Dir sonst noch Folien aus meiner damaligen Studienzeit geben. Ist aber Stand 2005 :(


Btw: Was mir noch einfällt. Vllt solltest Du ein paar Kapitel über Objektorientierte Programmierung lesen. Z.B. hier

http://www.galileocomputing.de/down...omputing_objektorientierte_programmierung.pdf


Dann wird Dir auch klarer sein was "BufferedReader in = new BufferedReader..." bedeutet.
 
Zuletzt bearbeitet:
"BufferedReader in = new BufferedReader..." ist für die eingabe zuständig z.B in deinem Fall die Eingabe der kleinsten Zahl.
 
Ja java müssen wir als erstes kennen lernen, die API ist super, aber teilweise verstehe ich nicht immer die englischen fachausdrücke. Aber danke erst mals.

Java ist eine Insel, fand ich anfangs auch sehr interessant, nur habe ich mir die Kundenrezensionen durchgelesen, und war von den schlechten bewertungen eher abgeschreckt dieses Werk zu kaufen. Ich habe von programmierung null ahnung, und muss mich erst mal mit der art und weise auseinandersetzen wie ein programm "denkt" bzw. was es braucht damit es arbeiten kann. Und da schrieben einige dass sei für Leute geeignet die vorkenntnisse haben.
 
Zuletzt bearbeitet von einem Moderator:
Also "BufferedReader in = new BufferedReader..." erzeugt ein Objekt der Klasse BufferedReader, dass zum Einlesen eines Datenstromes dient. In diesem Fall von der Tastatur (System.in)

Zur Erzeugung dient ein Konstruktor. Das ist die Methode (oder auch Funktion) new BufferedReader(...). Die Variable "in" zeigt dann auf das Objekt.


Stell Dir vor die Klasse BufferedReader würde Würfel heißen.

Würfel sechsSeitigerWürfel = new Würfel(6);
Würfel zwölfSeitigerWürfel = new Würfel(4);


Du könntest also mit dem Konstruktor new Würfel(int seitenzahl) neue Würfelobjekte erzeugen.

der sechs-Seitige Würfel könnte dann eine Funktion haben die würfeln heißt.

int geworfeneZahl = sechsSeitigerWürfel.würfeln();

Die gibt eine zufällig Zahl zwischen eins und sechs zurück.




Man merkt mir is langweilig ;)
 
@Jikakilla gute Erklärung ;)

@Hades85, ja "Java ist auch eine Insel" kann einen Anfänger wirklich fast erschlagen.

Ich fand Einstieg in Java 6 ganz gut als Einstieg.
Ich emfpehle Freunden und Bekannten aber meist immer, so fern sie die Möglichkeit haben, in die Bibliothek der Uni oder Fachhochschule zugehen und dort Bücher probe zulesen. Nur weil Person A mit Buch X super lernen konnte, muss Person B das nicht genauso ergehen.

Es gibt neben Java ist auch eine Insel auch noch das Handbuch der Java-Programmierung als kostenlose online Version.

€: Natürlich sind Solch Einstiegsbücher nicht unbedingt sehr ausführlich. Aber da helfen dann gut die beiden online Versionen, um Teile die nicht so gut erklärt wurden, dort noch mal nachzulesen. Also ohne diese kommt man leider doch fast nicht aus. Für den Anfang, find ich, reichen aber die versionen im netz, bzw die downloadbaren HTML versionen.
 
Zuletzt bearbeitet:
Wende mich wieder an euch, ich soll ne if anweisung schreiben, es soll ne zahl eingegeben werden, wenn sie kleiner als 5 ist, soll sie den zweiten zweig durchlaufen, den ich im code , meines erachtens schon geschrieben habe. Ist die zahl aber größer als 5 muss sie einen neuen zweig durchlaufen, und da soll nochmal geprüft werden ob die zahl kleiner als 8min ist, wenn ja , kommt "blinkstufe1",wenn nein dann "lampe aus". Jetzt stellt sich mir die frage kann ich einen wertebereich in der variable festlegen, zb. if(a<5&a<8)?

Also mein erster gedanke sieht wie folgt aus.

if(a>5)
if(a<8)
System.out.println("Blinkstufe 1")
else
System.out.println("Lampe Aus")

aber wie verknüpfe ich diese anweisung mit dem zweiten zweig, sollte die zahl kleiner als 5 sein muss sie ja irgendwie in den zweiten zweig wandern!?

PHP:
import java.io.*;

public class Entscheidungsbaeume {
       public static void main(String args[])
       throws IOException {
         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

         System.out.println("Eingabe der Min. Zahl");
         double a;
         a = Double.parseDouble(in.readLine());




          //ZweiterZweig
          if(a==1)
          System.out.println("Blinkstufe5");
          else
          if(a==2)
          System.out.println("Blinkstufe4");
          else
          if(a==3)
          System.out.println("Blinkstufe3");
          else
          System.out.println("Blinkstufe2");


          }

}



EDIT: achja ganz wichtig, ich darf keine switch case anweisung machen, erst mal nur so.
 
Zuletzt bearbeitet von einem Moderator:
also wenn ich dich richtig verstanden habe, soll erst geprüft werden ob A < 5 ist, wenn das WAHR ist, soll die if-Abfrage in deinem Code durchlaufen werden. sollte A aber nicht kleiner 5 sein, soll noch mal geprüft werden obs wenigstens kleiner 8 ist?
dann wohl in etwa so
Code:
if(a<5) //wenn a kleiner 5
{
     //hier die if-Abfrage deines Codes
}
else if(a>5&&a<8) // wenn a größer 5 und kleiner 8
{
      //Ausgabe der blinkstufe 1
}
else
{
    //was sonst getan werden soll zb "lampe aus"
}
 
Ja super, danke, war doch viel einfacher als gedacht ;-(

diese logischen operatoren habe ich direkt vor mir liegen, aber ich tu mich so schwer, dass dann auch anzuwenden, ich denke immer der leichteste weg wäre der falsche.
Ergänzung ()

PHP:
import java.io.*;

class Test {

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

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

          System.out.println("Hallo Herr xy");
          System.out.println("Guthabeneingabe");
          
          double a, b, c, d;
          c= a*b/100;
          d= c+a;
          System.out.println("Bitte geben sie ihr Guthaben ein");
          a = Integer.parseInt(in.readLine());

          System.out.println("Bitte geben sie ihren Zinsatz ein");
          b = Integer.parseInt(in.readLine());

          System.out.println("Deine Zinses Zinsen betragen: " + c);
          System.out.println("Dein neues Guthaben beträgt: " + d);

          System.out.println("geben sie ihren neuen zinssatz ein");

     }

}

Test.java:13:14: variable a might not have been initialized

das spuckt der compiler aus, braucht c einen startwert?


EDIT, habe die reihenfolge nicht beachtet, c und d kommen nach der eingabe der ersten beiden anderen.
 
Zuletzt bearbeitet von einem Moderator:
die Berechnung muss nach der Benutzereingabe kommen, so hat das Programm noch gar keinen Wert für a und b. :)

also so:
PHP:
         .....

         System.out.println("Bitte geben sie ihr Guthaben ein");
         a = Integer.parseInt(in.readLine());

          System.out.println("Bitte geben sie ihren Zinsatz ein");
          b = Integer.parseInt(in.readLine());
          
          c= a*b/100;
          d= c+a

         ......

und noch so als Tip, am besten gleich angewöhnen, den Variabelen und Funktionen eindeutige Namen zugeben. Dann versteht man auch in 2 Wochen noch was man gemacht hat :)
 
Es lohnt sich generell, den Variablen bei der Deklaration einen Startwert zuzuweisen. Es kann später nämlich Probleme geben, wenn der Inhalt einer Variable gelesen werden soll, die allerdings noch keinen Inhalt hat.
Meist haben Zahlenvariablen den Startwert 0, aber darauf sollte man sich nicht verlassen!

Zu deinen If-Abfragen:
Code:
If (a < 5) {
    // ...
} Else If (a > 5 && a < 8) {
    // ...
} Else If (a >= 8) {
    // ...
}
Und was soll dein Programm machen, wenn a = 5 ist? Da ist eine Lücke.


Der Lesbarkeit wegen, empfiehlt es sich, alle Anweisungen innerhalb ein If-Abfrage einzurücken. Später, wenn man dann anfängt, auch mal stärker verschachtelte Dinge zu tun,, wird es sonst kompliziert.
Beispiel:
Code:
While (a < 5) {
    If (a > 10) {
        // ...
    }

   For (int i = 0; i < a; i++) {
        If (i = 10) {
            // ...
        }
    }
}
Ohne Einrückung ist das sehr viel schwieriger zu entziffern.
Code:
While (a < 5) {
If (a > 10) {
// ...
}

For (int i = 0; i < a; i++) {
If (i = 10) {
// ...
}
}
}
Man erkennt nicht so einfach, was wie verschachtelt ist.
 
Zuletzt bearbeitet:
Stimmt, ist mir peinlicherweise gar nicht aufgefallen, e-Laurin hat recht, bei 5 hast du eine Lücke.
Ich hab deinen Code noch mal verfeinert.

Code:
public static void main(String args[]) throws IOException {
         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

         System.out.println("Eingabe der Min. Zahl");
         int a =0;
         a= Integer.parseInt(in.readLine());
Integer reicht wenn du in den IF-Abfragen eh auf Ganzzahlen prüfst.


Code:
          if(a<5) // Wenn a KLEINER 5, Einstieg hier
          {
              if(a==1)
                  System.out.println("Blinkstufe5");
              else if(a==2)
                  System.out.println("Blinkstufe4");
              else if(a==3)
                  System.out.println("Blinkstufe3");
              else // Wenn a den Wert 4 ODER <1 hat.
                  System.out.println("Blinkstufe2");
          }
          else if (a>=5&&a<8)
          /*Wenn a GRÖßER oder GLEICH 5 sowie KLEINER 8, Einstieg hier.
          Soll er bei 8 auch hier einsteigen noch ein "=" vor die 8  */
          {
               System.out.println("Blinkstufe1");
          }
          else // Bei 8 und größer, wird hier eingestiegen.
          {
               System.out.println("Lampe aus");          
          }
    }
 
Zuletzt bearbeitet:
Integer reicht wenn du in den IF-Abfragen eh auf Ganzzahlen prüfst.
Ob ganze Zahlen "reichen", hängt nicht von den if-Abfragen ab, sondern von der Aufgabenstellung.

So würde z.B. die Eingabe "5.5" für parseDouble in den zweiten Teil zur Ausführung bringen, für parseInt verursacht sie dagegen eine NuberFormatException.
 
Zuletzt bearbeitet:
erstmal vielen dank für eure mühen, ich werde die lücke schließen, laut aufgabenstellung ist der fall wenn a gleich 5 ist , gar nicht drinnen, aber werde es mal rein machen.

was ist eine NuberFormatException?
 
Eine NuberFormatException ist in erster Linie mal ein Tippfehler von mir. ;)

Richtig heißt das natürlich NumberFormatException. Diese "Fehlermeldung" wird ausgelöst, wenn z.B. parseInt(String s) einen String nicht in eine Zahl umwandeln kann, weil nicht erlaubte Zeichen vorkommen. (erlaubt sind an jeder Stelle die Ziffern 0-9 und an der ersten Stelle ggf. ein Minus)
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben