2009-03-18 8 views
0

Wie man einen String aus einer Textdatei in Integer-Array für Java zuweisen? Ich hatte das Integer-Array in eine Textdatei gespeichert, aber wie kann ich jetzt das ganze Integer-Array aus der Textdatei ohne jede Änderung abrufen? Ich möchte das Integer-Array wie vor dem Speichern in der Textdatei abgerufen. Teil meines Code unten:Wie wird eine Zeichenfolge aus einer Textdatei in ein Integer-Array für Java zugewiesen?

BufferedWriter f1 = new BufferedWriter(new InputStreamReader(new FileInputStream("Input.txt"))); 

int a[ ] = yes(test, test.length); //go to yes method,return value to array 
for(int i = 0; i < a.length; i++) 
{ 
    f1.write(a[i]); 
} 
    f1.close(); 

BufferedReader f2 = new BufferedReader(new InputStreamReader(new FileInputStream("Input.txt"))); 
String src; 
while((src = f2.readLine()) != null) 
{ 
    String[ ] s = src; 
    int a[ ] = Integer.parseInt(s);//same with before it saved 
    ... ... 
} 

(inkompatible Typen gefunden)
Wie die Originalität des Integer-Array reservieren (a []) nach dem Speichern und aus der Textdatei abgerufen? Vielen Dank!

Antwort

0

Sie müssen die Ganzzahlen irgendwie trennen. Die einfachste Lösung besteht darin, jeden in einer separaten Zeile zu schreiben. Oder verwenden Sie eine kommagetrennte Liste und verwenden Sie String.split (",")

+0

folgt Derzeit ist er nicht schreibt ganzen Zahlen, er schreibt Zeichen. –

+0

Das habe ich vorgeschlagen. Formatieren Sie die Art, wie die Daten geschrieben werden. – kgiannakakis

+0

Es hat nichts mit Format zu tun, er schreibt nicht einmal die gültigen Daten. –

0

Die Art, wie Sie die Zeichen geschrieben haben, ist völlig falsch, Sie schreiben die Zeichendarstellung des Int. Intern wird dies als Char geschrieben. Sie müssen Ihre ganzen Zahlen so schreiben.

for(int i = 0; i < a.length; i++) 
{ 
    String value = String.valueOf(a[i]); 
    f1.println(value); 
} 

Dies sollte kompatibel sein, wie Sie jetzt Ihre ganzen Zahlen lesen.

4

Das sieht wie Hausaufgaben aus. Wie auch immer, hier ist mein Testcode:

// Write integers to a file, each on a different line 
BufferedWriter f1 = new BufferedWriter(new FileWriter(new File("Input.txt"))); 
int a[] = new int[]{ 17 , 42 , 37 }; 
for (int i = 0 ; i < a.length ; i++) { 
    f1.write(String.valueOf(a[ i ]) + "\r\n"); 
} 
f1.close(); 

// Read integers from a file, assume each value on a different line 
final BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("Input.txt"))); 
String line; 
final List<Integer> values = new ArrayList<Integer>(); 
while ((line = bufferedReader.readLine()) != null) { 
    values.add(Integer.valueOf(line)); 
} 
bufferedReader.close(); 

// Convert List elements to array 
final int[] valueArray = new int[ values.size() ]; 
int counter = 0; 
for (int value : values) { 
    valueArray[ counter ] = value; 
    counter++; 
} 

// Print array values 
for (int value : valueArray) { 
    System.out.println("value: |" + value + "|"); 
} 

Der Ausgang ist als

value: |17| 
value: |42| 
value: |37| 
+0

Sorry, aber was bedeutet das durch endgültige Liste < Integer > values ​​= new ArrayList < Integer >() ;? –

+0

Dies ist eine List-Instanz, die Integer-Objekte enthält. Weitere Informationen finden Sie im Collections Framework in Java. – dhiller

+0

Kleiner Hinweis: Eine Liste implementiert die Iterable-Schnittstelle, sodass Sie sie in einer neuen for-Schleife verwenden können. – dhiller

Verwandte Themen