Captura de dados antes e apos o | (pipe)

6 respostas
java
H

Boa noite, gostaria da ajuda de vocês para me ajuda, estou tendo dificuldade em realizar um captura de dados que vem de um arquivo txt que tem esse paramento “c|1|1|200” porem preciso capturar paramento e colocar nas suas devida variável o “c” = string, “1” e “1” = int e “200” = double.

leitura (recebe todo o conteúdo do txt)

String [] palavra;

palavra = leitura.split("|");

iniciei fazendo assim porem ele está vindo letra por letra.

6 Respostas

M

Lembrando que metodo split usa regex \o

public class principal {
public static void main(String[] args) {
	Arrays.asList("c|1|1|200".split("\\|")).forEach(e -> {
		System.out.println(e);
	});
}

}

H

Bom dia amigo, obg, porem como preciso fazer alguns calculo de alguns paramentos conseguir fazer por scanner, porem estou tento um problema, aparece esse erro no final de programa:

Exception in thread “main” java.util.NoSuchElementException

at java.util.Scanner.throwFor(Scanner.java:862)

at java.util.Scanner.next(Scanner.java:1371)

at repasse.NewClass.main(NewClass.java:46)

C:\Users\hyago\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1

FALHA NA CONSTRUÇÃO (tempo total: 5 segundos)

O que pode ser?

H

o code fonte está no link abaixo, caso queira da uma olhada.

https://pastebin.com/D9LaSh8m

staroski

Dica: Ao invés de escrever seus if assim:

if (condicao1) {
    // faz algo
} else {
    if (condicao2) {
        // faz algo
    } else {
        if (condicao3) {
            // faz algo
        } else {
            if (condicaoN) {
                // faz algo
            }
        }
    }
}

Escreva assim, que é mais legível e fácil de manter:

if (condicao1) {
    // faz algo
} else if (condicao2) {
    // faz algo
} else if (condicao3) {
    // faz algo
} else if (condicaoN) {
    // faz algo
}

Outra coisa, evite implementar tudo dentro de um único método.
Quebre seu código em partes pequenas.

Exemplo:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Exemplo {

    private class Repasse {

        int prazo;
        int qtdParcelas;
        String tipo;
        float valor;

        Repasse(String linha) {
            String[] campos = linha.split("\\|");
            tipo = campos[0];
            prazo = Integer.parseInt(campos[1]);
            qtdParcelas = Integer.parseInt(campos[2]);
            valor = Float.parseFloat(campos[3]);
        }

        float calcularResultado() {
            switch (tipo) {
                case "c":
                    return calculaTipoC(this);
                case "d":
                    return calculaTipoD(this);
                default:
                    return 0;
            }
        }
    }

    public static void main(String[] args) throws Exception {
        Exemplo programa = new Exemplo();
        programa.executar();
    }

    private final Scanner input = new Scanner(System.in);

    public void executar() throws IOException {
        int opcao = 0;
        do {
            System.out.println("Digite o caminho do arquivo a ser lido.");
            String arquivoEntrada = input.nextLine();
            List<Repasse> repasses = calcularRepasses(arquivoEntrada);
            System.out.println(repasses);
            String arquivoSaida = arquivoEntrada + "Repasse.txt";
            System.out.println(arquivoSaida);
            salvarRepasses(repasses, arquivoSaida);
            System.out.println("Digite 0 para fechar o programa e 1 para continuar");
            opcao = Integer.parseInt(input.nextLine());
        } while (opcao != 0);
    }

    private List<Repasse> calcularRepasses(String caminho) throws IOException {
        Path arquivo = Paths.get(caminho);
        List<Repasse> repasses = new ArrayList<>();
        List<String> linhas = Files.readAllLines(arquivo);
        for (String linha : linhas) {
            repasses.add(new Repasse(linha));
        }
        return repasses;
    }

    private float calculaTipoC(Repasse repasse) {
        float resultado = 0;
        float resul = 0;
        if (repasse.prazo == 1 && repasse.qtdParcelas == 1) {
            resul = (float) ((repasse.valor * 4.99) / 100);
            resultado = repasse.valor - resul;
            System.out.println(resultado + "\n 1");
        } else if (repasse.prazo == 1 && repasse.qtdParcelas >= 2) {
            resul = (float) ((repasse.valor * 5.59) / 100);
            resultado = repasse.valor - resul;
            System.out.println(resultado + "\n 2");
        } else if (repasse.prazo == 14 && repasse.qtdParcelas == 1) {
            resul = (float) ((repasse.valor * 3.99) / 100);
            resultado = repasse.valor - resul;
            System.out.println(resultado + "\n 3");
        } else if (repasse.prazo == 14 && repasse.qtdParcelas >= 2) {
            resul = (float) ((repasse.valor * 4.59) / 100);
            resultado = repasse.valor - resul;
            System.out.println(resultado + "\n 4");
        } else if (repasse.prazo == 30 && repasse.qtdParcelas == 1) {
            resul = (float) ((repasse.valor * 3.19) / 100);
            resultado = repasse.valor - resul;
            System.out.println(resultado + "\n5");
        } else if (repasse.prazo == 30 && repasse.qtdParcelas >= 2) {
            resul = (float) ((repasse.valor * 3.79) / 100);
            resultado = repasse.valor - resul;
            System.out.println(resultado + "\n 6");
        }
        return resultado;
    }

    private float calculaTipoD(Repasse repasse) {
        float resul = (float) ((repasse.valor * 2.39) / 100);
        float resultado = repasse.valor - resul;
        System.out.println(resultado + "\n 7");
        return resultado;
    }

    private void salvarRepasses(List<Repasse> repasses, String caminho) throws IOException {
        Path arquivo = Paths.get(caminho);
        List<String> linhas = new ArrayList<>();
        for (Repasse repasse : repasses) {
            linhas.add("Repasse:" + repasse.calcularResultado());
        }
        Files.write(arquivo, linhas);
    }
}
H

amigo assim, vc ajudou pra crl. obg mesmo

H

Porem esse quebrar eu não entendo muito, me da um bug, as vezes, mas obg pela ajuda.

Criado 26 de novembro de 2018
Ultima resposta 26 de nov. de 2018
Respostas 6
Participantes 3