Habe For-Schleife die anders programmiert ist als ich Sie kenne. Bitte um Hilfe

P_H_I_L

Erfahrenes Mitglied
Hallo Zusammen, will eine Decode Funktion einbauen. Habe die Funktion aus Java ist auch eine Insel...
Code:
 public byte[] decode2(InputStream is, String pass) {
        try {
           Cipher c = Cipher.getInstance( "DES" );
           Key k = new SecretKeySpec( pass.getBytes(), "DES" );
           c.init( Cipher.DECRYPT_MODE, k );
           ByteArrayOutputStream bos = new ByteArrayOutputStream();
           CipherInputStream cis = new CipherInputStream( is, c );


          /* for ( int b; (b = cis.read()); != –1;){
            bos.write(b);
           }
            */
           cis.close();
   

        } catch (Exception e) {
            log(e.getMessage());
        }
        return null;
    }

Doch die Forschleife verstehe ich nicht... Der Code wird nicht Vallid... Ich programmiere in JAVA auch meine Vorschleife ein wenig anders. doch es funktioniert einfach nicht. hat jemand ne Lösung, wie man die Forschleife noch programmieren kann? bekomms nicht hin :(
 
Code:
for ( int b; (b = cis.read()) != –1; )

Du hast ein ; zu viel.
Richtig abschreiben bzw. kopieren will gelernt sein ;)
Kann sein das noch etwas nicht stimmt, hab mich jetzt nur auf die Schleife konzentriert^^
 
ja stimmt, hab mich da vertippt.

aber geht immer noch nicht..

kommt immer die meldung illegal start of expression...

der code der schleife wird nicht Valid :(

verzweifle fast....

Das ist der Code aus dem Buch:

Code:
static byte[] decode( InputStream is, String pass ) throws Exception 
  { 
    Cipher c = Cipher.getInstance( "DES" ); 
    Key k = new SecretKeySpec( pass.getBytes(), "DES" ); 
    c.init( Cipher.DECRYPT_MODE, k ); 
 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    CipherInputStream cis = new CipherInputStream( is, c ); 
 
    for ( int b; (b = cis.read()) != –1; ) 
      bos.write( b ); 
 
    cis.close(); 
    return bos.toByteArray(); 
  }

Verwene java 1.6 aber wird nicht Valid.. :( ?

Kenn die Schleifen-schreibweise auch nicht. Gehören da nicht klammern rum um das bos.write(b); --> { ... }
 
Bitte beschäftige dich nochmal mit den Java-Grundlagen. Eine for-Schleife benötigt bei nur einer Anweisung keine Klammern (aber man sollte sie immer hinschreiben).

Eine for-Schleife hat den Aufbau: Variablen-Initialisierung;Bedingung;Inkrement/Dekrement

Deine for-Schleife geht nicht, weil das hinten kein Minuszeichen vor der 1, sondern irgendein Bindestrich ist.
 
Es scheint, als ob Du die Schleife solange durchlaufen willst, solange der Wert b = cis.read Nicht -1 ist. Dafür solltest Du wohl While nehmen..

Code:
while (Bedingung) 
   {
      Anweisungsblock (was soll wiederholt werden?)
   }

mfg chmee
 
Naja gegen eine while Schleife spricht, dass der Sichtbarkeitsbereich einer Variablen möglichst klein sein sollte. Das ist bei der for-Schleife gegeben. Der Rest ist Geschmackssache ;)
 
Kann nur soviel sagen, dass die Schleife nicht ich programmiert habe sondern die Authoren des Buches. Ist eben 1 zu 1 aus dem Buch kopiert...

Ich versuchs mal mit ner while-schleife danke
 
Wenn du es direkt von der Seite kopierst, erkennt Eclipse es nicht als ein Minuszeichen, sondern als ein Bindestrich, womit es nichts anfangen kann.

Daher einfach mal das -1 auswählen, entfernen und neu eintippen.

Habs ausprobiert und geht.

Greetz
 
Zurück