2013-09-18 3 views
0

Мне нужно записать числа в текстовом файле, затем я должен прочитать файл и, наконец, исправить цифры. Я могу писать и читать файл, но я не знаю, как сделать математическое оппонирование.Как преобразовать поток в Int?

package clase.pkg13.de.septiembre; 
import java.io.*; 

public class FicheroTexto { 
    public static void main (String args[]) { 
     try { 
      PrintWriter salida = new PrintWriter (new BufferedWriter(new FileWriter("C:\\Users\\Santiago\\Desktop\\prueba.txt"))); 
      salida.println("1"); 
      salida.println("2"); 
      salida.close(); 

      BufferedReader entrada = new BufferedReader(new FileReader("C:\\Users\\Santiago\\Desktop\\prueba.txt")); 
      String s, s2 = new String(); 
      while((s= entrada.readLine()) !=null) 
       s2 = s2 + s + "\n"; 
      System.out.println("Numbers:"+"\n"+s2); 
      entrada.close(); 
     } catch (java.io.IOException e) { 
      // Do nothing 
     } 
    } 
} 
+0

atoi() ??? ..... –

+0

Преобразование строк в числа и добавить их; этот процесс тривиально доступен для поиска. –

+0

@JoeDF Наверное, нет. –

ответ

2

Используйте Integer.parseInt(string), чтобы преобразовать ваши строки в целые числа. Затем вы можете выполнять нормальные математические операции над ними.

parseInt 

public static int parseInt(String s) 
        throws NumberFormatException 

Parses the string argument as a signed decimal integer. The characters in the string must all be decimal digits, except that the first character may be an ASCII minus sign '-' ('\u002D') to indicate a negative value or an ASCII plus sign '+' ('\u002B') to indicate a positive value. The resulting integer value is returned, exactly as if the argument and the radix 10 were given as arguments to the parseInt(java.lang.String, int) method. 

Parameters: 
    s - a String containing the int representation to be parsed 
Returns: 
    the integer value represented by the argument in decimal. 
Throws: 
    NumberFormatException - if the string does not contain a parsable integer. 

http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt%28java.lang.String%29

0

Попробуйте обновленный код (который предполагает, что каждая строка содержит одно целое число). См учебник на разборе чисел из строки в «Java - ParseInt() Метод» (http://www.tutorialspoint.com/java/lang/integer_parseint.htm):

package clase.pkg13.de.septiembre; 
import java.io.*; 

public class FicheroTexto { 
    public static void main (String args[]) throws Exception{ 
    try { 
     PrintWriter salida = new PrintWriter (new BufferedWriter(new FileWriter("C:\\Users\\Santiago\\Desktop\\prueba.txt"))); 
     salida.println("1"); 
     salida.println("2"); 
     salida.close(); 

     BufferedReader entrada = new BufferedReader(new FileReader("C:\\Users\\Santiago\\Desktop\\prueba.txt")); 
     String s, s2 = new String(); 
     int sum = 0; 
     while((s= entrada.readLine()) !=null) 
     { 
     s2 = s2 + s + "\n"; 
     sum += Integer.parseInt(s); 

     } 
     System.out.println("Numbers:"+"\n"+s2); 
     System.out.println("Sum: " + sum); 
     entrada.close(); 
    } catch (java.io.IOException e) { 
     // Do nothing 
    } 
    } 
} 
1

Я предлагаю вам использовать сканер.

PrintWriter salida = new PrintWriter (new FileWriter("prueba.txt")); 
salida.println(1); 
salida.println(2); 
salida.close(); 

Scanner scanner = new Scanner(new FileReader("prueba.txt")); 
long total = 0; 
List<Long> longs = new ArrayList<>(); 
while(scanner.hasNextLong()) { 
    long l = scanner.nextLong(); 
    longs.add(l); 
    total += l; 
} 
scanner.close(); 
System.out.println("Numbers:\n" + longs); 
System.out.println("Sum: " + total); 

печатает

Numbers: 
[1, 2] 
Sum: 3 
Смежные вопросы