Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Problema com o Format2

Olá amigos. Tive problemas utilizando o Intellij, estava dando exceção na seguinte linha:

double saldo = linhaScanner.nextDouble();

Debugando não entendi, estava retornando null, e para solicionar tive que realizar desta forma.

double saldo = Double.parseDouble(linhaScanner.next());

Será que o problema tem a ver com a versão do JDK? Estou utilizando a JDK 8.

6 respostas

Boa tarde Yves!

Qual o conteúdo do seu arquivo contas.csv? Posta aqui o conteúdo do arquivo.

Se está retornando null, deve estar faltando o valor do saldo em uma das linhas.

Boa tarde, Jonas. Obrigado pelo help! Abaixo está os dados do arquivo contas.csv

CC,22,33,Nico Steppat,210.1
CP,11,55,Luan Silva,1300.98
CC,22,44,Ana Garcias,350.40

Estranho.. Não tem porquê o saldo estar retornando null. Em um certo momento do curso o instrutor apaga um pedaço de um registro, para provocar um erro; imaginei que você tivesse feito a mesma coisa e esquecido de corrigir...

Posta teu código todo aqui

Pois é... e agora também estou tendo problema com a classe TesteUnicodeEEnconding kkk

package br.com.alura.java.io.teste;

import java.io.File;
import java.util.Arrays;
import java.util.Locale;
import java.util.Scanner;

public class TesteLeitura2 {

    public static void main(String[] args) throws Exception {

        Scanner scanner = new Scanner(new File("contas.csv"));
        while (scanner.hasNextLine()) {
            String linha = scanner.nextLine();
            //System.out.println(linha);

            Scanner linhaScanner = new Scanner(linha);
            linhaScanner.useDelimiter(",");

            String tipoConta = linhaScanner.next();
            int agencia = linhaScanner.nextInt();
            int numero = linhaScanner.nextInt();
            String titular = linhaScanner.next();
            double saldo = Double.parseDouble(linhaScanner.next());

            System.out.format(Locale.US, "%s - %04d-%08d, %s: %08.2f %n",
                    tipoConta, agencia, numero, titular, saldo);

            linhaScanner.close();

//            String[] valores = linha.split(",");
//            System.out.println(valores[3]);
        }
        scanner.close();
    }
}
solução!

Boa noite Yves!

Seu problema provavelmente deve lançar uma exception InputMismatchException. Isso ocorre porque pelo modo como vc está fazendo, o Scanner está esperando um double cujos decimais são separados por vírgula, mas recebeu um separado por ponto. Tente essa inserção:

 while (scanner.hasNextLine()) {
            String linha = scanner.nextLine();
            //System.out.println(linha);

            Scanner linhaScanner = new Scanner(linha);
            linhaScanner.useLocale(Locale.US);
            linhaScanner.useDelimiter(",");

/restante do código

Essa configuração fará a alteração necessária para que não precise usar o parse.