class Taschelampe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • class Taschelampe

    hallo leute,

    ich schreibe gerade ein taschenlampenprogramm im java zu schreiben, aber es will einfach nicht klappen.
    habe immer den fehler bei der eingabe. das programm kann einfach nicht zeichen auslesen. habe schon alles mögliche durchprobiert, aber es klappt einfach nicht...bitte euch deswegen um hilfe.
    ich sehe kein duplikat für das zeichen z.
    die jeweiligen fehlermeldungen habe ich im code auskommentiert.
    in c++ ist es so einfach mit cin, aber verstehe nicht, wieso in java so kompliziert ist :(

    Quellcode

    1. package taschenlampe;
    2. public class Taschenlampe {
    3. public Taschenlampe(){
    4. Schalter = 1;
    5. Lampe = 0;
    6. Batterie = 1;
    7. }
    8. public void Ausschalten(){
    9. Schalter = 0;
    10. }
    11. public void Einschalten(){
    12. Schalter = 0;
    13. }
    14. public int Leuchtet(){
    15. if(Lampe == 0 && Schalter == 0 && Batterie == 1){
    16. return 0;
    17. }
    18. else{
    19. return 1;
    20. }
    21. }
    22. private int Batterie;
    23. private int Lampe;
    24. private int Schalter;
    25. public static void main(String[] args) throws Exception{
    26. char z = 'x';
    27. Taschenlampe t1;
    28. t1 = new Taschenlampe();
    29. System.out.println("Bedienung: e..ein a..aus x..ende\n");
    30. do{
    31. z = (char)System.in.read();
    32. System.in.skip(2);
    33. if(z == 'g') t1.Einschalten();
    34. if(z == 'e') t1.Ausschalten();
    35. if(t1.Leuchtet() == 0){
    36. System.out.println("Taschenlampe leuchtet.");
    37. }
    38. else{
    39. System.out.println("Taschenlampe leuchtet nicht.");
    40. }
    41. }while(z!='a');
    42. System.out.println("Programmende");
    43. }
    44. }
    Alles anzeigen


    dankeschön im voraus!


    lg

    Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von composer ()

  • In der Regel kannst du Typen nicht einfach so irgendwelchen Variabeln zuweisen, wenn es sich nicht um die gleichen Typen handelt. Casten heißt das Zauberwort (nein nicht Carsten:D)

    z = System.in.read(); // FEHLER 2: Type mismatch: cannot convert from int to char


    Quellcode

    1. z = (char)System.in.read();


    if(t1.Leuchtet()){ // FEHLER 2: Type mismatch: cannot convert from int to boolean


    Quellcode

    1. if(t1.Leuchtet() == 1){
  • ich dachte, system.in.read(); kann alles nehmen, wie es ist..
    zb. wie in c++ das cin.
    habe nun meinen code geupdated, aber leider bekomme ich eine weitere fehlermeldung, nach dem ich die erste fehlermeldung behoben habe, also das mit dem char..

    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    Unhandled exception type IOException

    at taschenlampe.Taschenlampe.main(Taschenlampe.java:39)
  • Java ist halt nicht c++ :P

    Quellcode

    1. public static void main(String[] args){


    ändern in

    Quellcode

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


    Das ist aber nur ein Workaround. Informier dich mal nach Exceptions in Java, damit du das sinnvoler abfängst. Um es mal kurz zusammenfassen: Eine Exception ist ne Ausnahme, die auftreten kann, wenn eine Funktion aufgerufen wird. Diese Exception MUSST du behandeln, sonst kannst du deinen Code nicht kompilieren. Du hast zum einen die Möglichkeit ne Exception abzufangen und zum anderen die Exception weiterzuleiten. Was du da jetzt machst du gibts einfach alle Exceptions an die Konsole weiter.
  • kann man verhindern, dass man zum schluss beim x drücken nicht die meldung angezeigt bekommt: "Lampe leuchtet". und erst dann "Programmende erreicht."

    das mit drei meldungen habe ich durch diesen befehl hingekriegt: System.in.skip(2);
    aber das mit x schaffe ich es einfach nicht. siehe den code im ersten post. danke!

    lg