tenho um programa em java eu programei para retornar uma coluna especifica.
Como faço agora para que eu leia linha por linha somente desta coluna e na coluna checar se o conteudo (String) da coluna constitui um problema binário (apenas 2 valores distintos).
Exemplo
tenho um arquivo .txt com os seguintes campos que serve para o meu programa ler como entrada:
eu indico para meu programa ler a coluna 3 (TITULO3) e me retorna isto no console de saida:
saida coluna:
TITULO3
sim
nao
nao
sim
PASSO3:
agora como faço para que o programa compare o conteudo (String) da coluna e me diga se o que tem é binario ou nao:
exemplo:
TITULO3
ligado // quero que saia 1 ou true
desligado // quero que saia 0 ou false
ligado // quero que saia 1 ou true
ligado // quero que saia 1 ou true
desligado // quero que saia 0 ou false
ou
TITULO3
on // quero que saia 1 ou true
off // quero que saia 0 ou false
off // quero que saia 0 ou false
on // quero que saia 1 ou true
off // quero que saia 0 ou false
Você le o valor joga em um método que compare ele com o que você quer ( on/off, ligado/delisgado) e faz esse método retornar um valor diferente dependendo da condição que for verdadeira.
[quote=Jose111]Você le o valor joga em um método que compare ele com o que você quer ( on/off, ligado/delisgado) e faz esse método retornar um valor diferente dependendo da condição que for verdadeira.
Se não der certo posta seu código para nós analisarmos.[/quote]
vamos melhorar um pouco o codigo não é?
public boolean retornaCondicaoBooleana(String parametoTxt){
r eturn parametroTxt.equals("on");
}
não precisa de todas essas linhas ai não.
Agora basta substituir o on por um valor valido, ou usar um Map<String, Boolean>, e definir para cada String um valor booleano.
E se por a caso, eu nao não puder especificar o valor contido nesta coluna, pois poderei ler um outro arquivo que nao tem sim ou nao (exemplo: ligado e desligado), daí qual comparativo farei se no codigo tem: return parametroTxt.equals(“on”);
ou
parametroTxt.equal(“on”)
Daí vai dar pau num eh.
Queria que o programa compreendesse automaticamente ao ler o arquivo se a coluna tem algum problema do tipo binario.
public class Dicionario{
Map<String, Boolean> dicionario = new HashMap<String, Boolean>();
public void addPalavra(String texto, Boolean valor){
dicionario.put(texto, valor);
}
public Boolean getBoolean(String texto){
return dicionario.get(texto);
}
}
Lembrando que seria bacana vc ler o dicinário de um arquivo txt, ou registar todos os valores no map antes de começar, assim o arquivo pode mudar a vontade, e o programa está suportando essas alterações.
Outra lapada amigo. e se eu nao puder usar um Map, por questoes de desempenho. as vezes eu tenho um arquivo de sei lá, 4GB de dados, daí a maquina vai pro brejo.
Cara, quando tenho campo que o valor é boolean sempre defino como numerico no banco (Oracle) e que recebe os valores 0 ou 1. Se você usar a JPA/Hibernate ele já reconhece se o campo é true ou false só com o valor que vem do seu campo. Esse negócio de tratar como string não acho uma boa pratica de programação.
O melhor é usar o equals la em cima e comparar com um string pré definida.
Não sei qual o problema em armazenas os valores em memoria, vc não precisa armazenar todos, até por que um Map por exemplo não deixaria duplicar, vc so armazena o que precisa, se for 4GB de arquivo e tiver 4 on, 2 off, 3 ligado, vão ficar 9 registros em memoria, comparando o consumo de Strings e Booleans, nem vai ter diferença
Eu quero que o programa leia sem usar nada que perca a performance, tipo comparar se o que eu tenho na coluna for assim:
COLUNA
on
off
off
off
on
on
off
on
besteira (o programa deve impedir isso e sair e gerar log de erro)
on
off
.
.
.
ele deve verificar se o que tem na coluna deve ser [on ou off] e o que tiver de extra ele deve mostrar uma exceção e sair e gerar o log em um arquivo log.txt
OBS: O programa deve ler arquivos que nao tenha somente [on ou off], haverá casos de pegar arquivos que contem [ligado e desligado por exemplo].
ele deve compara se é biinario ou nao dependendo do que vir, e o que nao for binario ele sai e mostra exceção e gera log.