quarta-feira, 28 de abril de 2010

[java-br] Problema com BufferedWriter

·

 

Boa noite,

Estou com um problema no BufferedWriter: tenho um loop de 10 iterações.
Debugando no console, eu consigo imprimir essas dez linhas, no entanto
somente 9 são escritas no arquivo.

Queria saber onde está o problema. Se sempre há um retorno do método, qual a
razão do write deixar a última linha em branco?

Output atual:

> Case #1: 2 3

Case #2: 1 4

Case #3: 4 5

Case #4: 29 46

Case #5: 11 56

Case #6: 4 5

Case #7: 40 46

Case #8: 16 35

Case #9: 55 74

Output esperado:

> Case #1: 2 3

Case #2: 1 4

Case #3: 4 5

Case #4: 29 46

Case #5: 11 56

Case #6: 4 5

Case #7: 40 46

Case #8: 16 35

Case #9: 55 74

Case #10: 7 9

import java.io.BufferedReader;
>
> import java.io.BufferedWriter;
>
> import java.io.File;
>
> import java.io.FileReader;
>
> import java.io.FileWriter;
>
> import java.io.IOException;
>
> import java.util.ArrayList;
>
>
>>
>> public class A1 {
>
> static int count=1;
>
> public static void main(String[] args) {
>
> new A1().start(args[0]);
>
> }
>
> public void start(String s){
>
> try {
>
> File f = new File(s);
>
> FileReader fr;
>
> fr = new FileReader(f);
>
> BufferedReader br = new BufferedReader(fr);
>
> int cases = Integer.parseInt(br.readLine());
>
> File fw = new File("output.txt");
>
> f.createNewFile();
>
> FileWriter fwr = new FileWriter(fw);
>
> BufferedWriter bw = new BufferedWriter(fwr);
>
> ArrayList<Integer> items = new ArrayList<Integer>();
>
> ArrayList<String> result = new ArrayList<String>();
>
> for (int i = 0; i<cases; i++){
>
> items.clear();
>
> int money = Integer.parseInt(br.readLine());
>
> Integer.parseInt(br.readLine()); // itemNum
>
> for (String r: br.readLine().split("\\s+")) {
>
> try{
>
> items.add(Integer.parseInt(r));
>
> } catch (Exception e) {;
>
> e.printStackTrace();
>
> }
>
> }
>
> result.add((doCalc(money,items)));
>
> }
>
> fr.close();
>
> for (String x: result){
>
> bw.flush();
>
> bw.write(x);
>
> }
>
>
>> } catch (IOException e) {
>
> e.printStackTrace();
>
> }
>
> }
>
>
>> public String doCalc(int c, ArrayList<Integer> a){
>
> String msg = "";
>
> for(int i=0;i<a.size();i++) {
>
> for(int j=i+1;j<a.size();j++){
>
> if ((a.get(i) + a.get(j))== c){
>
> msg += "Case #" + count + ": " + (i+1) + " " + (j+1) + "\n";
>
> // System.out.println("Case #" + count + ": " + (i+1) + " " + (j+1));
>
> count++;
>
> break;
>
> }
>
> }
>
> if (!msg.isEmpty())
>
> break;
>
> }
>
> return msg;
>
> }
>
> }
>
>
>
E o arquivo de input é assim:

10
>
> 100
>
> 3
>
> 5 75 25
>
> 200
>
> 7
>
> 150 24 79 50 88 345 3
>
> 8
>
> 8
>
> 2 1 9 4 4 56 90 3
>
>
(coloquei apenas um pedaço)

Chris

[As partes desta mensagem que não continham texto foram removidas]

__._,_.___
Atividade nos últimos dias:
Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br
Conheça agora belas mulheres que buscam homens como você!

Veja os imóveis mais vendidos em Rio de Janeiro no Yahoo! Imóveis

JAN, FEV e MARÇO são os melhores meses para conseguir um novo EMPREGO
.

__,_._,___

0 comentários:

Pague com LPs do Mister Colibri

Pague com LPs do Mister Colibri
Quer comprar celular,Tablet,pen drive, GPS e muito outros produtos e ainda podendo pagar tudo em LPs ?Pois saiba que isso é possível,basta você visitar o site downloadstotal.com e realizar a sua compra com toda tranquilidade e segurança!!!

Hora

Online

Arquivo do Blog