WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Char Array in Java (http://www.wcm.at/forum/showthread.php?t=195776)

coolbininet 22.07.2006 19:12

Char Array in Java
 
Hallo Leute!

Was stimmt mit folgendem Code nicht?

Code:


import java.io.*;

public class DateiLeser {
       
        /**
        * @param args
        * @return
        */
        public void EingabeDatei(String dateiname) throws IOException{
                // TODO Auto-generated method stub
                FileReader datei;
                int c, i = 0, count=0;
                       
                try
                {
                        datei  = new FileReader(dateiname);
                        while ((c = datei.read()) != -1)
                        {
                                count++;  // Ermittle die Größe des Charr Arrays                               
                        }
                        datei.close();
                        datei = new FileReader(dateiname);
                        char[]name = new char[count];                       
                       
                        while ((c = datei.read()) != -1)
                        {
                                name[i++] = (char)c;  // Beschreibe das CharArray, solange es Zeichen gibt!
                        }
                        datei.close();
                        System.out.print(name); // HIER IST DIE AUSGABE MÖGLICH BRAUCHE SIE ABER WEITER UNTEN       
                       
                }
                catch(IOException e)
                {
                        System.err.println("Fehler beim Lesen der Datei!");
                }
                System.out.println("");
        }
      // System.out.print(name);  HIER IST DIE AUSGABE NICHT MÖGLICH, HAT DAS MIT DEM TRY CATCH ZU TUN?
       
}

Möchte das CharArray weiter unten ausgeben. Geht nicht, warum?

Grüße

Coolbininet

delphirocks 23.07.2006 10:05

Willst du die Variable außerhalb der Methode ausgeben? Dort ist sie nicht bekannt. Da müßtest du eine Member-Variable anlegen.

Falls du sie aber direkt nach dem try/catch Block ausgeben willst, definiere sie einfach gleich nach "FileReader datei", dann ist sie an der Stelle bekannt.

Übrigens, wenn du eine throws IOException Klausel angibst, dann brauchst du die IOException nicht abzufangen. Die Methode wirft ja keine Exception, so wie sie jetzt geschrieben ist.

coolbininet 23.07.2006 12:36

Hallo delphirocks!

Folgendes, ich möchte:

... Falls du sie aber direkt nach dem try/catch Block ausgeben willst, definiere sie einfach gleich nach "FileReader datei", dann ist sie an der Stelle bekannt. ...

Das Problem ist aber, dass ich mit dem ersten new FileReader die Anzahl der Zeichen bestimme. Jetzt brauche ich aber die count Variable dafür. Da ich aber nicht weiß, wie groß die Anzahl der Zeichen ist, wird erst später unten berechnet, kann ich nicht am Anfang bereits das CharArray mit dem Wert der Count Variablen initialisieren, was mache ich da?

Die Ausgabe soll unten nach dem Try/catch Block sein.

Bytheway bist du professioneller Javaprogrammierer?

Code:

try
                {
                        datei  = new FileReader(dateiname);
                        while ((c = datei.read()) != -1)
                        {
                                count++;  // Ermittle die Größe des Charr Arrays                               
                        }
                        datei.close();
                        datei = new FileReader(dateiname);
                        char[]name = new char[count];                       
                       
                        while ((c = datei.read()) != -1)
                        {
                                name[i++] = (char)c;  // Beschreibe das CharArray, solange es Zeichen gibt!
                        }
                        datei.close();
                        System.out.print(name); // HIER IST DIE AUSGABE MÖGLICH BRAUCHE SIE ABER WEITER UNTEN       

                }


Grüße Coolbininet

T.dot 23.07.2006 13:16

Du kannst ja vorher die Variable deklarieren, ohne ihr einen Wert zuzuweißen :rolleyes:

dh.

Code:

char[]name;
try
{
  ...

  name = new char[count];

  ...
}
catch(IOException e)
{
 ...
}

System.out.print(name);


delphirocks 23.07.2006 21:47

Du mußt aber sagen

char[] name=null;

Ansonsten regt sich der Java Compiler auf, daß die Variable nicht initialisiert wurde.

Bin übrigens professioneller C++/Delphi/PLSQL/C#/PHP Progammierer - mache nur ganz selten einen Abstecher in die Java-Welt.

lg

T.dot 24.07.2006 06:18

Guten Morgen!

Hab das jetz nur kurz ausprobiert, aber du musst die Variable eigentlich nicht initialisieren (Java 1.5.07, schneller Test im JDeveloper)

Code:

public class Class1
{
  public static void main (String args[])
  {
      char[] name;
      name = new char[1];
      System.out.print(name);
  }
}

funktioniert hier eigentlich wunderbar, keine Ahnung wie das in C und Co. ist ;)

mfg Thomas

delphirocks 24.07.2006 07:52

Nach einem try/catch funktioniert's aber nicht mehr (JDK 1.6.0-Beta).
Ist aber auch streng, das Java ;)

coolbininet 24.07.2006 16:34

Habe mir selber ein Ei gelegt!
 
Hallo Leute!

Bin auf den Fehler draufgekommen, leider nur durch einen Zufall, Schande über mein Haupt. Bin aber froh, dass es auch keiner im allerersten Posting des Codes von mir gefunden hat == Betriebsblindheit, bei mir viel mehr Anfängerschwierigkeite beim Java lernen. Der Fairness halber muss ich sagen, ich dachte auch zuerst es hat mit dem Try/catch zu tun. Neee, schneckeeeeee natürlich nicht.

Schaut Euch mal an, wo ich mit das letzte mal das Array ausgeben wollte. ... na gefunden ... ich wollte es zwar innerhalb der Methode ausgeben, nach dem Try/Catch aber nicht auf Ebene der Klasse.

aaaaaaaarrrrrrrrrrrrrrggggggggggggggg :mad:

Danke trotzdem für die Hilfe.

Frage an delphirocks: Kommst du vielleicht aus meiner Gegend, suche nämlich eine günstige Nachhilfe für die FH (Wien). Oder kennt sonst noch jemand wer, der mir günstig in Programmier unter die Vitiche greifen kann. (rein programmiertechnisch, nix sexuelles :D :D :D )

Grüße Coolbininet

delphirocks 24.07.2006 21:25

Komme aus Salzburg und könnte dir in Java auch nicht recht viel mehr als "Hello World" beibringen :-)


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag