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.
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);
});
}
}
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?
o code fonte está no link abaixo, caso queira da uma olhada.
https://pastebin.com/D9LaSh8m
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);
}
}
amigo assim, vc ajudou pra crl. obg mesmo
Porem esse quebrar eu não entendo muito, me da um bug, as vezes, mas obg pela ajuda.