Как назначить строку из текстового файла в целочисленный массив для Java? - PullRequest
0 голосов
/ 18 марта 2009

Как назначить строку из текстового файла в массив целых чисел для Java? Я сохранил целочисленный массив в текстовый файл, но как теперь я могу извлечь весь целочисленный массив из текстового файла без каких-либо изменений? Я хочу, чтобы целочисленный массив извлекался так же, как и прежде, чем он сохранялся в текстовом файле. Ниже часть моего кода:

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  
    ... ...  
}  

(найдены несовместимые типы)
Как сохранить оригинальность целочисленного массива (a []) после сохранения и извлечения из текстового файла? Спасибо!

Ответы [ 3 ]

4 голосов
/ 18 марта 2009

Это похоже на домашнюю работу. В любом случае, вот мой тестовый код:

// 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 + "|" );
}

Вывод выглядит следующим образом

value: |17|
value: |42|
value: |37|
0 голосов
/ 18 марта 2009

То, как вы пишете символы, совершенно неверно, вы пишете символьное представление типа int. Внутренне это написано как символ. Вы должны написать свои целые числа, как это.

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

Это должно быть совместимо с тем, как вы сейчас читаете свои целые числа.

0 голосов
/ 18 марта 2009

Вам нужно как-то разделить целые числа. Самое простое решение - написать каждый в отдельной строке. Или используйте разделенный запятыми список, а затем используйте String.split (",")

...