Olá a todos! Venho me deparando com erros estranhos no java desde que mudei de sistema operacional. Antes eu usava windows 7 e não tinha os mesmos problemas.
Veja, já estou a 1 ano programando em java e esses métodos que estou usando já utilizei em diversos outros problemas parecidos e consegui executar.
Agora, estava fazendo o código do curso do Nélio alvez, usando a mesma versão java que ele, entretanto encontrei o erro dentro do while, aparentemente o while executa a condição mas ele está deixando passar mesmo se a condição não for satisfeita. Cheguei a esta conclusão tentando captar o dado que não deveria entrar e consegui com exito!
package genericoDelimitado.application;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import genericoDelimitado.entities.Product;
import genericoDelimitado.services.*;
public class Program {
public static void main(String[] args) {
List<Product> list = new ArrayList<>();
String path = "/home/washington/Documentos/produtos.txt";
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
String line = br.readLine();
while (line != null) {
String[] fields = line.split(",");
if(fields.length == 0 || fields.length <= 1) {
Product x = CalculationService.max(list);
System.out.println("Max:");
System.out.println(x);
}else {
System.out.println(fields[0].toString() + fields[1].toString());
list.add(new Product(fields[0], Double.parseDouble(fields[1])));
line = br.readLine();
}
}
Product x = CalculationService.max(list);
System.out.println("Max:");
System.out.println(x);
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
Veja que dentro do if, eu coloquei o código que seria executado após while, mas ele nunca chegou a ser executado por conta que a linha vazia do arquivo estava entrando mesmo não sendo permitido pela condição. Com esse if consegui capturar o erro e identificar que era realmente isto que estava acontecendo.
Logo quando o código é executado, ele entra em um loop infinito uma vez que assim que ele lê todos os caracteres, ele entra nas linhas vazias e conseqüentemente no if, fazendo com que o código dentro do bloco seja executado até você forçar parada na ide. Detalhe, estou usando eclipse(primeira vez que uso, sempre usei netBeans)
Alguém tem uma ideia do que possa ser e como resolver este problema??