Java Datenauslesen + Bcc berechnen

Gast #1639932
Moin Moin,

ich bin etwas VIEL überfordert. Und zwar habe ich folgendes Problem und 
hoffe auf Hilfe?!
Ich habe hier einmal zwei Scripte das eine ist von einem Freund das 
andere aus dem Netz. Leider habe ich von Programmierung Null ahnung.

Datensatz auslesen:
1
import java.io.*;
2

3
public class LeseAusDatei {
4

5
  public static void main (String[] args) throws IOException{
6
     byte zeichen;
7
     char buchstabe;
8
     String text = "";
9
     String dateiName = "PAT_HIMED0000002295.DAT";
10
     FileInputStream leseStrom = new FileInputStream(dateiName);
11
     do{
12
       zeichen = (byte)leseStrom.read();
13
       text += (char)zeichen;
14
     } while (zeichen !=-1);
15
     leseStrom.close();
16
     System.out.println(text);
17
  }
18
}

BCC Berechnung: (vom Freund)
1
package tp;
2

3
public class BCCBerechner {
4
  public static void main(String[] args) {
5
    String eingabe = "DN09111110300380002792002210002518033411 BGabriele Schilles Krähenwegweg 42 Mustertal 52115 2B";
6
    int erg = 0;
7
    for (int i = 0; i < eingabe.length(); i++)
8
      erg = erg ^ eingabe.charAt(i);
9
    System.out.println("Ergebnis(dezimal): " + (erg ^ 3));
10
  }
11
  
12
}
Das Funktioniert auch soweit.

Nun bräuchte ich die möglichkeit das automatisch nach einlesen des 
Datensatzes der BCC berechnet wird.

Könnte mir da evtl. jemand Helfen?
Gast
1
import java.io.*;
2

3
public class LeseAusDateiund BerechneBCC {
4

5
  public static void main (String[] args) throws IOException{
6
     byte zeichen;
7
     char buchstabe;
8
     String text = "";
9
     String dateiName = "PAT_HIMED0000002295.DAT";
10
     FileInputStream leseStrom = new FileInputStream(dateiName);
11
     do{
12
       zeichen = (byte)leseStrom.read();
13
       text += (char)zeichen;
14
     } while (zeichen !=-1);
15
     leseStrom.close();
16
     String bcc = StringBCCBerechner(text);
17
     System.out.println(bcc);
18
  }
19

20
  public static StringBCCBerechner (String text) {
21
    int erg = 0;
22
    for (int i = 0; i < text.length(); i++)
23
      erg = erg ^ eingabe.charAt(i);
24
    System.out.println("Ergebnis(dezimal): " + (erg ^ 3));
25
  }
26
}

ode rso irgendwie. nicht getestet, grad nur auf die schnelle 
zusammengeklickt ...
Gast
...
Zu schnell auf ok geklickt:
1
  public static StringBCCBerechner (String text) {
2
    int erg = 0;
3
    string result:
4
    for (int i = 0; i < text.length(); i++)
5
      erg = erg ^ eingabe.charAt(i);
6
     result = (erg ^ 3).toString();
7
    return result;
8
  }
Gast
Weil ich SI bin und kein AE. Programmierung ist einfach nicht mein ding!
Habe schön öfter versucht mich da einzuarbeiten es ist aber ein Buch mit 
7 Siegeln. Mein Chef verlangt halt von mir das ich das mache auch wenn 
es nicht mein Job ist. Da ich Null Peil habe versuche ich eine andere 
Lösung zu finden. Das das so scheiße ist ist auch mir klar...
Gast
import java.io.*;

public class LeseAusDatei {

  public static void main (String[] args) throws IOException{
     byte zeichen;
     char buchstabe;
     String text = "";
     String dateiName = "PAT_HIMED0000002295.DAT";
     FileInputStream leseStrom = new FileInputStream(dateiName);
     int erg = 0;

     do{
       zeichen = (byte)leseStrom.read();
       erg ^= zeichen;

     } while (zeichen !=-1);
     leseStrom.close();
     System.out.println(""+erg);
  }
}
Gast
Danke erstmal für den quell Text. Aber leider liefert er mir Minuswerte.

Habe ihn mir einwenig angeschaut und bissel mit meinem wenigen können 
geändert.
1
import java.io.*;
2

3
public class LeseAusDatei {
4

5
  public static void main (String[] args) throws IOException{
6
     byte zeichen;
7
     char buchstabe;
8
     String text = "";
9
     String dateiName = "PAT_HIMED0000002295.DAT";
10
     FileInputStream leseStrom = new FileInputStream(dateiName);
11
     int erg = 0;
12
          
13
     while ((zeichen = (byte) leseStrom.read()) != -1)
14
         erg = erg ^ zeichen;
15
     leseStrom.close();
16
     System.out.println(""+ (erg ^3));
17
  }
18
}

Ich bin nun bei Schritt 2 angekommen bei dem die ausgelesen werte in ein 
Verzeichnis auf C geschrieben werden sollen.
1
import java.io.*;
2
import java.io.FileInputStream;
3
import java.io.FileOutputStream;
4
import java.io.IOException;
5

6
public class LeseAusDatei {
7

8
  public static void main (String[] args) throws IOException{
9
     byte zeichen;
10
     char buchstabe;
11
     String text = "";
12
     String dateiName = "PAT_HIMED0000002295.DAT";
13
     FileInputStream leseStrom = new FileInputStream(dateiName);
14
     int erg = 0;
15
     byte [] text2Bytes = dateiName.getBytes();         
16
     
17
     String dateiName1 = "c:\\Sicherung\\test.DAT";         
18
     
19
     FileOutputStream fos = new FileOutputStream(dateiName1);   
20
     fos.write(text2Bytes);                   
21
     
22
     while ((zeichen = (byte) leseStrom.read()) != -1)
23
         erg = erg ^ zeichen;
24
     leseStrom.close();
25
     System.out.println(""+ (erg ^3));
26
  }
27
}

Leider Schreibt er mir immer in das angegebene Verzeichnis in die .dat 
Datei die erstellt wird "PAT_HIMED0000002295.DAT"
Was mir auch klar ist das das passiert, aber ich habe keine ahnung was 
ich ändern müsste damit er mir den Inhalt der PAT_HIMED0000002295.DAT 
Datei sichert. Kann mir da evtl. jemand Helfen?

gruß
Persönliche Seite
Es ist überhaupt nicht klar was du jetzt sichern willst. Aber was macht 
eigentlich ein "SI" aus?

Etwas mitdenken kann man doch bestimmt auch in diesem Bereich erwarten.

Die Leseroutine ist jetzt korrekt, (das byte muss da noch weg) aber wenn 
du:
byte [] text2Bytes = dateiName.getBytes();
Aufrufst, dieses in eine neue Datei schreibst und dich ersthaft wunderst 
warum du den Inhalt von dateiName (nämlich *PAT_HIMED0000002295.DAT* wie 
oben zugewiesen) in deiner neuen Datei erhältst weiß ich ehrlich gesagt 
nicht mehr weiter...

Auf diese weise schreibst du alles was in der Ursprungsdatei ist 
gleichzeitig in die neue Datei:
1
while ((zeichen = leseStrom.read()) != -1) {
2
         erg = erg ^ (zeichen 0xFF);
3
         fos.write(zeichen)
4
}
Wenn du das Ergebnis in eine Datei schreiben willst dann solltest du 
eben das Ergebnis statt per System Out auszugeben eben in die neue Datei 
schreiben.

Wieso sträubst du dich so davor einfach mal ein paar Tutorials über Java 
durch zuarbeiten, vielleicht wird dann einiges klarer.

Und klar können dir hier viele Leute helfen, nur normalerweise bezahlt 
man Leute dafür das sie die Arbeit von anderen tun die Sie selbst nicht 
auf die Reihe kriegen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.