Um TreeMap, dentro de outro TreeMap! quero pegar um valor

5 respostas
_

tipo, tenho um TreeMap1 , onde insiro um nome e no outro campo vai ter outro TreeMap2. esse TreeMap2, vai ter a data e o preço… ai eu quero pegar o preço passando o nome do produto. ai vou pegar o TreeMap correspondente ao nome do produto, e vou tentar buscar o preço a partir do dia. mas ta dando erro! ( java.lang.NullPointerException )
alguem pode ajudar?
o codigo pra insercao axo que ta certo:

CADASTRAR O PRECO;

public boolean cadastrarPreço(String nome, float preço){

Calendar c = Calendar.getInstance();

Date hoje = c.getTime();

String preço1 = String.valueOf(preço);

String data = String.valueOf(+hoje.getDate()+"/"+(hoje.getMonth()+1));

produtos.put(nome, new TreeMap().put(data , preço1));

return true;

}

PEGAR O PRECO ( TA DANDO ERRO);

public float getPreço(String nome){

TreeMap consulta = (TreeMap) produtos.get(nome);

Calendar c = Calendar.getInstance();

Date hoje = c.getTime();

String data = String.valueOf(+hoje.getDate()+"/"+(hoje.getMonth()+1));

Object o = consulta.get(data);

String p = String.valueOf(o);

float preço = Float.valueOf§.floatValue();

System.out.println(preço);

return preço;

}--------------------------------------------------------------
alguem ajuda? vlw

5 Respostas

_

alguem ajuda ae!
flw

_

Eu acho que nessa parte:
produtos.put(nome, new TreeMap().put(data , preço1));
Você pode as vezes estar colocando um map em cima de outro, não sei exatamente o erro…

Aconselho a utilizar um debugger, e caso nao tenha, faça o seguinte: Imprima na tela o que o programa está fazendo, ai quando der o NullPointException você vai saber em que linha o comando deu erro, faça tipo:

CADASTRAR O PRECO;

public boolean cadastrarPreço(String nome, float preço){

Calendar c = Calendar.getInstance();

System.out.println(linha 1: criei o calendario);
Date hoje = c.getTime();

String preço1 = String.valueOf(preço);

System.out.println(linha 3: peguei o preco);
String data = String.valueOf(+hoje.getDate()+"/"+(hoje.getMonth()+1));

produtos.put(nome, new TreeMap().put(data , preço1));

System.out.println(linha 5: coloquei no map);

return true;
}

Sinceramente, tá um pouco complicada essa tua implementacao, era melhor voce fazer cria um Objeto Produto, com todos os dados, e colocar no map tipo, map.put(“nome do produto”, produto);

Valeu()

_

jah fiz isso, ele da pau quando vai entrar nessa parte:

Object o = consulta.get(data);

qnd ele vai tentar pegar o preco do treeMap, ai q da erro! ( pegar dentro do TreeMap que esta dentro do TreeMap… entendeu? rs)

_

Acho que ja sei teu erro…
em
produtos.put(nome, new TreeMap().put(data , preço1));

você tá criando um novo TreeMap e colocando a data e o preco, só que criando um novo objeto e colocando no primeiro Map (produtos) voce tá apagando o Map anterior! Por isso quando for localizar o objeto, ele não vai existir mais (NullPoint).

Quando voce for adicionar um novo preco no mesmo local, retire o TreeMap que está dentro, adicione o novo objeto, e depois coloque de volta! tipo:

precoMap = (TreeMap)produtos.get(nome);

if(precoMap == null) {

precoMap = new TreeMap();

precoMap.put(data, preco1);
produtos.put(nome, precoMap);

Eu nao testei, so segui por logica mesmo, mas se nao for este o problema, avisa!

()

_

consegui! vlw

Criado 2 de novembro de 2004
Ultima resposta 2 de nov. de 2004
Respostas 5
Participantes 2