Converter dados de um array

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.

A linha correta é esta:

ja corrigi isto caro amigo.

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.

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

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:

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?

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.

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?

[quote=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: [/quote]

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).

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

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:

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

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…

Ex. Digamos q eu quizesse colocar no array:

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

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!

  • 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

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?

[quote=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?[/quote]

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

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.