kostenloser Webspace werbefrei: lima-city


Von "switch", "enum" und anderen Fehlern in Java

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    eicluca

    eicluca hat kostenlosen Webspace.

    Ich bin zurzeit dabei ein Programm für ein Projekt zu entwickeln, das Buchstaben in Brailleschrift umwandeln soll. Dazu verwende ich einen Arduino und die Arduino IDE unter Ubuntu 14.04 mit Java 1.7.

    Doch da gibt es einige Probleme:

    Erstmal funktioniert switch nicht mit String, obwohl ich Version 1.7 verwende.

    boolean printLetter(String letter) {
      //test if just one letter
      int letterLength = letter.length();
      if (letterLength == 1) {
        try {
          String value; // assume input
          Letter letterInt = Letter.valueOf(letter); // surround with try/catch
          switch (letterInt) {
            case 'A'
              digitalWrite(mot1, HIGH);
              delay(waitOn);
              digitalWrite(mot1, LOW);
              delay(waitOff);
              break;
    //...
    
    ...//
          }
          return true;
        } catch {
          return false;
        }
      } else {
        return false;
      }


    anscheinend ist, laut verschiedenen Foren, dieses Problem durch enum zu lösen.

    enum Letter {
      A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z};
      private :
    }


    Doch beim Verifien kommen folgende Fehlermeldungen:

    BetaBook.ino:34:3: error: expected unqualified-id before ‘private’
    BetaBook.ino:35:1: error: expected declaration before ‘}’ token


    Das Programm ist zwar noch nicht ganz fertig, aber es wäre nett, wenn ihr einmal drüberschauen könntet um mir zu helfen. :wink:

    Danke im Voraus.

    Hier noch der volle Code bis jetzt:

    // Motors connected
    // NOT 4,11,12,13
    int mot1 = 13;
    int mot2 = 13;
    int mot3 = 13;
    int mot4 = 13;
    int mot5 = 13;
    int mot6 = 13;
    int but1 = 14;
    int but2 = 14;
    int waitOn = 1000;
    int waitOff = 600;
    // the setup routine runs once when you press reset:
    void setup() {                
      // initialize the digital pin as an output
      pinMode(mot1, OUTPUT);
      pinMode(mot2, OUTPUT);
      pinMode(mot3, OUTPUT);
      pinMode(mot4, OUTPUT);
      pinMode(mot5, OUTPUT);
      pinMode(mot6, OUTPUT);
      pinMode(but1, INPUT);
      pinMode(but2, INPUT);
      
    }
    
    // the loop routine runs over and over again forever:
    void loop() {
      
    }
    
    enum Letter {
      A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z};
      private :
    }
    
    void selectBook() {
      
    }
    
    void loadBook(String selectedBook) {
       
    }
    
    boolean printLetter(String letter) {
      //test if just one letter
      int letterLength = letter.length();
      if (letterLength == 1) {
        try {
          String value; // assume input
          Letter letterInt = Letter.valueOf(letter); // surround with try/catch
          switch (letterInt) {
            case 'A'
              digitalWrite(mot1, HIGH);
              delay(waitOn);
              digitalWrite(mot1, LOW);
              delay(waitOff);
              break;
            case 'B'
              digitalWrite(mot1, HIGH);
              digitalWrite(mot3, HIGH);
              delay(waitOn);
              digitalWrite(mot1, LOW);
              digitalWrite(mot3, LOW);
              delay(waitOff);
              break;
            case 'C'
              digitalWrite(mot1, HIGH);
              digitalWrite(mot2, HIGH);
              delay(waitOn);
              digitalWrite(mot1, LOW);
              digitalWrite(mot2, LOW);
              delay(waitOff);
              break;
            case 'D'
              digitalWrite(mot1, HIGH);
              digitalWrite(mot2, HIGH);
              digitalWrite(mot4, HIGH);
              delay(waitOn);
              digitalWrite(mot1, LOW);
              digitalWrite(mot2, LOW);
              digitalWrite(mot4, LOW);
              delay(waitOff);
              break;
            case 'E'
              digitalWrite(mot1, HIGH);
              digitalWrite(mot4, HIGH);
              delay(waitOn);
              digitalWrite(mot1, LOW);
              digitalWrite(mot4, LOW);
              delay(waitOff);
              break;
            case 'F'
              digitalWrite(mot1, HIGH);
              digitalWrite(mot2, HIGH);
              digitalWrite(mot3, HIGH);
              delay(waitOn);
              digitalWrite(mot1, LOW);
              digitalWrite(mot2, LOW);
              digitalWrite(mot3, LOW);
              delay(waitOff);
              break;
            case 'G'
              digitalWrite(mot1, HIGH);
              digitalWrite(mot2, HIGH);
              digitalWrite(mot3, HIGH);
              digitalWrite(mot4, HIGH);
              delay(waitOn);
              digitalWrite(mot1, LOW);
              digitalWrite(mot2, LOW);
              digitalWrite(mot3, LOW);
              digitalWrite(mot4, LOW);
              delay(waitOff);
              break;
            case 'H'
              digitalWrite(mot1, HIGH);
              digitalWrite(mot3, HIGH);
              digitalWrite(mot4, HIGH);
              delay(waitOn);
              digitalWrite(mot1, LOW);
              digitalWrite(mot3, LOW);
              digitalWrite(mot4, LOW);
              delay(waitOff);
              break;
            case 'I'
              digitalWrite(mot2, HIGH);
              digitalWrite(mot3, HIGH);
              delay(waitOn);
              digitalWrite(mot2, LOW);
              digitalWrite(mot3, LOW);
              delay(waitOff);
              break;
          }
          return true;
        } catch {
          return false;
        }
      } else {
        return false;
      }
    }
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,

    die enum brauchst du nicht wirklich..



    Falls doch, hier im richtigen Syntax:

    enum Letter {
    A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
    }


    Versuchs mal hiermit:


    boolean printLetter(String letter) {
    
    int letterLength = letter.length();
    
    if (letterLength == 1) {
    
    //soweit ich weiß gibts in der Brailleschrift keine Groß-/Kleinschreibung
    //daher wird hier alles in Großbuchstaben konvertiert
    
    String input = letter.toUpperCase();
    
    //switch mit einzelnen Buchstaben (Character) geht, daher char an Position 0 holen und unser 
    //switch-Konstrukt damit füttern
    
    //ausführlichere Schreibweise:
    /* char buchstabe = input.charAt(0);
       switch (buchstabe){
    	 case 'A': 
    	break;
    }
    
    */
    
    switch (input.charAt(0)) {
      case 'A': 
    	 digitalWrite(mot1, HIGH);
              delay(waitOn);
              digitalWrite(mot1, LOW);
              delay(waitOff);
    	 break;
    
      case 'B':
    	// und so weiter
    	break;
    
      //und so weiter...
    }
    
    
    
    return true;
    }
    return false;
    
    }


    Nur mal als grober Entwurf, günstiger wäre es der Methode "printLetter" nur einen char zu übergeben und in einer weiteren Methode in einer Schleife den String in chars zu zerlegen und damit "printLetter" zu füttern.

    Mfg
    Arthur Dent
  4. Autor dieses Themas

    eicluca

    eicluca hat kostenlosen Webspace.

    Danke für die Ratschläge, ja, ich versuche jetzt einmal das Ganze mit char statt String zu machen. Du hast recht, das sollte besser funktionieren :biggrin:
  5. johanneskirchgemeinde

    johanneskirchgemeinde hat kostenlosen Webspace.

    eicluca schrieb:
    anscheinend ist, laut verschiedenen Foren, dieses Problem durch enum zu lösen.

    enum Letter {
      A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z};
      private :
    }


    Doch beim Verifien kommen folgende Fehlermeldungen:

    BetaBook.ino:34:3: error: expected unqualified-id before ?private?
    BetaBook.ino:35:1: error: expected declaration before ?}? token

    Das "private :" ist mir in Java noch nie begegnet. Folglich wird es auch vom Compiler bemängelt, also einfach weglassen.
    Außerdem musst Du im case den selben Typ wie im Switch verwenden, also keinen char schreiben, sondern den enum-Wert (also ohne Anführungszeichen). Und der Doppelpunkt fehlt auch.
    switch (letterInt) {
            case A:
                digitalWrite(mot1, HIGH);
    ...


    Oder Du nimmste für einen Buchstaben gleich
    char
    statt
    String
    .
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!