Converter dados de um array

19 respostas
S

Coisa simples recebi do array estou tentando a conversao mas esta dando erro.

/*Checa Double.*/
	public static boolean checkDouble(ArrayList valor){
		double dValor;
			try{
				for(int i = 0; i < valor.size(); i ++){
					if(!valor.get(i).equals(null) || !valor.get(i).equals("")){
						dValor = Double.parseDouble(valor.get(i)); //Casting ** ERRO
					} else {
						return false;
					}
				}
				return true;
			} catch (NumberFormatException e) {
				return false;
			}
	}

Erro: parseDouble(java.lang.String)
Ele esta entendo q é uma String e nao esta convertendo é isto?
Mas por exemplo se tiver um valor numerico no array ele nao deixa passar ainda assim.

19 Respostas

von.juliano

A linha correta é esta:

S

ja corrigi isto caro amigo.

von.juliano

Bom, o que tem nesse Array? Se for Strings é só vc fazer assim:

agora, se for double é só fazer

Tenta aí e vê se funciona.

S

"toString()); "
Oq qr dizer exatamente?

von.juliano

O método toString() faz a conversão de um objeto para String.

No seu caso, vc vai utilizá-lo se seu ArrayList conter Strings pq o método parseDouble() deve receber uma String como argumento. Blz?:thumbup:

S

entao digamos q os valores q chegaram no meu array foram : “5”, “OI”.
Sendo assim o “5” ja foi extraido como numero e o “oi” com String.
E como o metodo ParseDouble so recebe Strings tenho q antes fazer a conversao para String. Resultando em 2 castings.
Esta é a melhor maneira?

von.juliano

A idéia não é bem essa, essa solução que eu te passei só serve se no seu Array houver um tipo uniforme de dados, só String ou só double.

Outro detalhe é que o método parseDouble trasnforma String em double, sendo assim, se vc passar uma String que não esteja no “formato” de um número, vai ocorrer um erro.

S

Na verdade meu array nao tem um tipo uniform de dados, posso receber tanto Strings como numeros.
Mas neste caso usei o try{} para testar o erro.
Se ao inves de Strings quizesse somente numeros, é correto um array de numeros?

fabim

von.juliano:
O método toString() faz a conversão de um objeto para String.

No seu caso, vc vai utilizá-lo se seu ArrayList conter Strings pq o método parseDouble() deve receber uma String como argumento. Blz?:thumbup:

Apenas uma observação qto a essa sua afirmação:

O Metodo .toString não converte um objeto para String. Ele retorna a representação String desse objeto.

confuso, mas tem muita diferença.

exemplo: tenho uma classe pais, com varios atributos: id, sigla, etc…

nessa classe, eu faço um override de .toString, fazendo o toString retornar a Sigla

dessa maneira, qdo adiciono objetos Pais numa combo, eu verei na combo apenas a Sigla do objeto (se vc nao sobrescrever o .toString ele vai exibir o hash acho).

S

Mas a utilizacao do toString é válida neste caso?

von.juliano

Um ArrayList sempre retorna um objeto, independente do que vc coloca nele, entaum vc pode colocar variados tipos de dados nele, porém vai ter q fazer as verificações necessárias na hora de recuperá-los. ok? :thumbup:

E só pra constar, o cara q postou aí tem razão, acho que eu me expressei mau! :roll:

S

certo!
Meio q mudando de assunto …
Se eu quizesse varias dimensoes neste array, seria melhor um vetor?
Tipo 3 ou 4 colunas .

fabim

explica melhor pq quer varias colunas…

provavelmente essas colunas pertecem todas a um objeto comum, entao seria melhor vc instanciar objetos e adicionar os objetos na coleção…

S

Ex. Digamos q eu quizesse colocar no array:

  • Label
  • valor
  • qtde
  • msg
    Sao 4 colunas.
von.juliano

Não acho uma boa idéia. Dificilmente vc vai precisar um vetor de 2 dimensões, quanto mais com 3 ou 4, então evite fazer isso, use no máximo 2.

Dá uma olhada aqui:
http://java.sun.com/j2se/1.5.0/docs/api/

Procure por pelas Collections, vc vai encontrar uma série de formas diferentes de armazenar seus dados, aí é só utilizar a que lhe for mais útil!

fabim
  • Label
  • valor
  • qtde
  • msg

faz assim…

cria uma classe q encapsula esses attributos q vc quer:

class Teste {

private JLabel Label;
 private int valor;
 private int qtde;
 private String msg;

... // cria os set's e get's... ou passa os argumentos ja no constructor

}

ai vc faz:

Teste t = new Teste()

t.setLabel(umaLabelQualquer);

t.setValor(valor);

t.setQtde(qtde);

t.setMsg(msg);

depois c vai na sua Collection (List, etc)… e faz

List.add(t);

ai vc tem os objetos todos adicionaods na lista… pra manipular depois vc faria algo como

(Teste)List.get(2).getValor();

por ai vai o.O

S

Certo.
Até a parte de criar um bean eu entendi.
Mas para adicionar ele no array, eu teria q criar um novo para cada linha?

fabim

Silvio_java:
Certo.
Até a parte de criar um bean eu entendi.
Mas para adicionar ele no array, eu teria q criar um novo para cada linha?

se sao objetos diferentes, entao é um bean (new) pra cada…

S

Seria viavel fazer isto com o os dados vindos de um form.
Por ex: no getParameter() eu tenho todos os dados vindos dele né, label e valor. Faço um for até o fim do get parameter e coloco isto num beam.

Criado 22 de janeiro de 2007
Ultima resposta 22 de jan. de 2007
Respostas 19
Participantes 3