Anfänger Problem- Java Eingabe durch Datei

Fraenzchen

Grünschnabel
Hallo,

ich soll über eine mir gegebene Textdatei mehrere Java-Arrays füllen. Insgesamt sind es vier vom Typ double und drei vom Typ long deren Größe ebenfalls durch die Datei bestimmt wird, durch die ersten drei übergebenen Variablen, danach werden erst die double und danach die long Arrays gefüllt. Wie die Datei von der ich die Werte bekomme aussehen soll, kann ich selbst bestimmen. Wie kann ich das in Java umsetzen, ich hab bisher nur gelernt, wie ich von der Konsole einlese.

Da das meine erste Frage ist bitte noch etwas nachsichtig mit mir sein. Falls noch was unklar ist einfach Fragen, über Hilfe wär ich sehr dankbar.
 
Hallo.
Zeig uns doch mal, wie die Quell-Datei, sprich die Text-Datei aussieht.

Lesen tust du dann mit einem Gebilde, etwa wie:
Code:
BufferedReader in = new BufferedReader(
          new InputStreamReader(
            new FileInputStream( "MyFile.txt" ) ) );
        String s = in.readLine();
        in.close();

Oder an welcher Stelle hapert's?

MfG Gerrit
 
Also wie gesagt die Datei besteht noch nicht. Die erstell ich dann wenn ich weiß wie es am einfachsten für Java wäre. Das ganze soll eigentlich nur ne Übung für mich sein damit ich Java lerne. Ich übersetz eigentlich nur ein C Programm in ein Java Programm ist alles n bisschen komplexer.
 
Hallo,

Du sagst, du schreibst ein C-Programm in Java. Wie sieht denn die Datei von dem C-Programm aus?

MFG

Sascha
 
Da ich noch nicht weiss wie man das so hübsch zwischenrein hängt muss ich es leider direkt drunter schreiben.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Code:
long indat(nscf,nel,hqz,nqz,mqz,zt,up,zk,xko,yko,zko,o,bndn)

 long *nscf; 
 long nel[],hqz[],nqz[],mqz[],bndn[ND][ND];  
 double zt[],up[],zk[],xko[],yko[],zko[],o[]; 

        {  /*** Einlesen der Datei die als erstes Argument in argv **/
           /*** uebergeben wird.                                   **/
         long nza,natom,bndi,i,j,BNDM,result;

         *nscf=nmxscf;
         result = scanf("%d %d %d",&natom,&BNDM,nscf);
         nza= natom-1;  
         
         printf("Vor bndi \n"); 
         printf(" %ld %ld \n",nza, result);
         getchar();
          
         


         for (i=0;i<=nza;i++) {
         scanf("%d %d %d %d %lf",&o[i],&zt[i],&up[i],&zk[i]); }


         for (i=0;i<=nza;i++){
         scanf("%lf %lf %lf",&xko[i],&yko[i],&zko[i]); }
        
         if (BNDM==1)
         for (i=0;i<=nza;i++)
            for (j=0;j<=NBOND-1;j++){
               scanf("%d",&bndi);
                  if ((bndi >0) && ((bndi-1) != i))  
                    bndn[i][bndi-1]=1;  }
         
         return(nza);
        }  /** Ende des Lesens der Eingabedatei                    **/


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Das ist jetzt aber nur die Eingabe, das komplette Programm umfasst über 1500 Zeilen und den Rest hab ich schon übersetzt. Die Arrays die übergeben werden sind in der main deklariert aber als externe.
 
Schaust du mal bei dir in der Toolbar. Da ist ein Button mit einer Raute drauf. Da kannst du dann den Code einfügen.

Ich meinte nicht den Quelltext der C-Datei. :)

Befüllt das C-Programm die Arrays nicht aus einer Datei?

MFG

Sascha
 
In Java kannst du das fast genauso machen. Statt scanf benutzt du dann

Code:
scanf("%d %d %d %d %lf",&o[i],&zt[i],&up[i],&zk[i]);


Java:
String line = //aktuelle Zeile aus deiner Datei z.B. mit BufferedReader.readLine()
Object [] objects = new MessageFormat("%d %d %d %d %lf").parse(line);

In objects steht dann das was geparst wurde, also das was in c als Referenz angegeben werden kann.
 
Hi,
du kannst die Sache noch dahingehend vereinfachen, dass du den Scanner aus java.util benutzt:
Code:
Scanner scan = new Scanner(myFile);

mittels scan.next...() kannst du jeweils das nächste Double, Float, Byte etc. auslesen.

grüße,
Clash
 
Zurück