Tenho este código, que por exemplo, ao cadastrar dois produtos, ao tentar localizar pelo codigo de 1 a 100, ele retorna : “index out of bounds size:2 list:2”
public ArrayList<Produto> pesquisaCodigo(int codIni, int codFin) {
ArrayList<Produto> pesquisa = new ArrayList<Produto>();
for (int x = 0; x < listaProd.size(); x++) {
if ((listaProd.get(x).getCodigo() >= codIni)
&& (listaProd.get(x).getCodigo() <= codFin)) {
pesquisa.add(listaProd.get(x));
}
}
return pesquisa;
}
public ArrayList<Produto> pesquisaCodigo(int codIni, int codFin) {
ArrayList<Produto> pesquisa = new ArrayList<Produto>();
for (int x = 0; x < listaProd.size(); x++) {
if ((listaProd.get(x).getCodigo() >= codIni)
&& (listaProd.get(x).getCodigo() <= codFin)) {
pesquisa.add(listaProd.get(x));
}
}
return pesquisa;
}
De onde você tirou isso ?
listaProd.size()
Não seria
pesquisa.size()
??
Veja se é isso mesmo.
Abraços.
quikkoo
cara, me parece q ta tudo certo nesse código, tem certeza que a exceção vem dessa função ae?
P
patrizio.cannoni
Talvez listaProd seja uma variável de instância da classe do manfred.
Se usar pesquisa.size(), a execução não entra no loop, pois a recem criada pesquisa não tem elementos (size é zero).
O código me parece certo; não quer postar a classe inteira?
manfred2k3
Esta seria a Classe ( Sem comandos de cadastro etc )
importjava.util.ArrayList;publicclassListaProdutos{privateArrayList<Produto>listaProd=newArrayList<Produto>();publicArrayList<Produto>pesquisaCodigo(intcodIni,intcodFin){ArrayList<Produto>pesquisa=newArrayList<Produto>();for(intx=0;x<listaProd.size();x++){if((listaProd.get(x).getCodigo()>=codIni)&&(listaProd.get(x).getCodigo()<=codFin)){pesquisa.add(listaProd.get(x));}}Estenoprogramaqueéinseridoosvalores[code]System.out.println("Defina o Codigo Inicial ");intcodIni=entrada.nextInt();System.out.println("Defina o Codigo Final ");intcodFin=entrada.nextInt();ArrayList<Produto>todosProd2=listaProd.pesquisaCodigo(codIni,codFin);
Talvez listaProd seja uma variável de instância da classe do manfred.
Se usar pesquisa.size(), a execução não entra no loop, pois a recem criada pesquisa não tem elementos (size é zero).
O código me parece certo; não quer postar a classe inteira?
Tem razão cara, não tinha pensado nisso.
O problema é que temos somente o trecho do código do cara, temos que esperar ele colocar a classe inteira mesmo.
Abraços.
manfred2k3
postado acima
P
patrizio.cannoni
#System.out.println("Defina o Codigo Inicial ");#intcodIni=entrada.nextInt();#System.out.println("Defina o Codigo Final ");#intcodFin=entrada.nextInt();##ArrayList<Produto>todosProd2=listaProd.pesquisaCodigo(#codIni,codFin);
O que é entrada?
felipealbuquerque
Observação que eu acho válida: para iterar em uma lista, utilize o seu Iterator.
Complementando o posto anterior: eu acho que, se há erro no código, o erro não está no trecho postado por você. Você já chegou a ver a linha na qual está dando o erro?
sublyer
Só por curiosidade, de onde vem os códigos que você quer buscar?
P
patrizio.cannoni
Ótima observação cara.
manfred2k3
intcodIni=entrada.nextInt();System.out.println("Defina o Codigo Final ");intcodFin=entrada.nextInt();
No caso foram cadastrados objetos na Arraylist, e assim procura os códigos deles.
manfred2k3
o entrada é o Scanner.
P
patrizio.cannoni
Esperimenta usar o iterator da ArrayList, como postou o Felipe.
manfred2k3
for (Iterator iterator = listaProd.iterator(); iterator.hasNext();) {
prod = iterator.next();
o netbeans nao reconhece a variavel prod
importei todas as bibliotecas
felipealbuquerque
manfred2k3:
for (Iterator iterator = listaProd.iterator(); iterator.hasNext();) {
prod = iterator.next();
o netbeans nao reconhece a variavel prod
importei todas as bibliotecas
A variável prod foi declarada na linha número 3 do post que eu enviei falando sobre o Iterator.
manfred2k3
Sim, foi o que eu fiz.
O netbeans relata que são incompatíveis, e como dica ele pede a Classe Produto, não a variável prod.