[Resolvido]foreach duplo

12 respostas
F

oie galera...
tou começando a minha vida na programação java, e cada dia fico mais maravilhado com esta linguagem

estou tendo um problema
preciso usar um elemento de cada foreach juntos

assim url_pdfs[0] e name_pdf[0]

fiz assim mais esta demorando muito pra compilar

for ( String url_pdfs : file_url_pdf){
					for (String name_pdf : name_file_pdf){
                                         }
                                }

queria saber se existe alguma solução assim
tentei deste modo mais não consigo.
se vcs tiverem outra maneira podem falar

for ( String url_pdfs : file_url_pdf ; String name_pdf : name_file_pdf){
					
					
					
				}

12 Respostas

R

Demorando pra compilar por causa de um foreach aninhado ? Nunca ouvi falar. Você tentou usar um for comum ? O que acontece ?

F

não consegui fazer com for comun partindo da lista…
não cheguei a este nivel ainda…

mais vou pesquisar agora…

valew rmendes08

G

Flip_novidade:
oie galera…
tou começando a minha vida na programação java, e cada dia fico mais maravilhado com esta linguagem

ficou meio confuso essa sua explicacao… mais

que tal um for normal ?

String teste;
int condicao;
if(url_pdfs.size > name_file_pdf.size) // pegar o maior valor para percorrer todos os valores
 condicao = url_pdfs.size;
else
 condicao =name_file_pdf.size;
for(i=0: condicao == i : i++){
 if(i <= url_pdfs.size)//para nao dar erro no codigo(tentar acessar um elemento que nao existe)
     teste += url_pdfs.get(i);
 if(i <= name_file_pdf.size)//para nao dar erro no codigo(tentar acessar um elemento que nao existe)
     teste += name_file_pdf.get(i);
}

[color=red]Obs: fiz o codigo de cabeça sem editor, se der algum erro nada que aquele ctrl+espaço nao ajude. [/color]

F

putaz ta meio confuso ainda

tudo isso eu pego de uma lista que bem do bd.

private List<String> file_url_pdf;
	private List<String> name_file_pdf


										DataBaseAdapter dbadapterrr = new DataBaseAdapter();
										file_url_pdf = dbadapterrr.getListaPdf(getApplicationContext(), idmes); // pega o endereço do pdf

										DataBaseAdapter dbadapterrrr = new DataBaseAdapter();
										name_file_pdf = dbadapterrrr.getListaNomePdf(getApplicationContext(), idmes);

tipo no mesmo tempo que tenho que pegar a url 1 tenho que pegar o nome 1...

R

Você sabe como acessar uma lista através de índice ?

F

não

tentei adaptar o codigo do nosso amigo... mais da erro.
String testepdf = null;
				String testeurl = null;
				int condicao;  
				if(file_url_pdf.size() > name_file_pdf.size()){ // pegar o maior valor para percorrer todos os valores  
				condicao = file_url_pdf.size();  
				}else{  
				condicao =name_file_pdf.size();  
					for(int i=0 ; condicao == i ; i++ ){
						
						if(i <= file_url_pdf.size()){//para nao dar erro no codigo(tentar acessar um elemento que nao existe)  
						   testepdf += file_url_pdf.get(i);  
						}if(i <= name_file_pdf.size()){//para nao dar erro no codigo(tentar acessar um elemento que nao existe)  
						    testeurl += name_file_pdf.get(i);  
						} 
						URL url = new URL(testepdf);
						URLConnection conection = url.openConnection();
						conection.connect();
						int lenghtOfFile = conection.getContentLength();
						InputStream input = new BufferedInputStream(url.openStream());
						OutputStream output = new FileOutputStream(Environment.getExternalStoragePublicDirectory("/APP/"+testeurl));

					         byte[] data = new byte[8192];
						//byte[] data = new byte[1024];
						while ((count = input.read(data)) != -1) {	
							output.write(data, 0, count);
						}
						output.flush();
						output.close();
						input.close();
						
	    

					}
				}
R

Com o perdão do termo, não seja porco! Não copie e cole código pra ver no que vai dar … Isso é gambiarra. Entenda o que você está fazendo antes de mais nada:

http://docs.oracle.com/javase/6/docs/api/java/util/List.html#get(int)

http://www.caelum.com.br/apostila-java-orientacao-objetos/collections-framework/

F

mais eu entendi sim…

ai tentei implementar com minha necessidade…

mais num foi

G

Flip_novidade:
mais eu entendi sim…

ai tentei implementar com minha necessidade…

mais num foi

for(int i=0 ; condicao == i ; i++ )

// acho que é

  for(int i=0 ; condicao >= i ; i++ )

como eu disse … fiz o codigo rapidinho sem editor analise o codigo =p

R

Bom, mas pelo que eu to vendo , o seu problema é mais com lógica do que com o uso da lista em si. Pelo que eu entendi do seu códio, você tem que fazer o download de um arquivo pdf e salvar em alguma armazenagem local, é isso ?

G

TB acho q ele nao ta conseguindo pq a lista dele deve ta vindo null ele nao deve estar conseguindo buscar valor nenhum.

F

galera muito obrigado pelas dicas....
ainda não tinha trabalhado com lista em minha vida...

Guguuu parabens pela sua logica um dia vou ficar assim

sgue o codigo como ficou
obs: isso é android, onde baixo uns arquivos da web e uso dentro do palicativo

String testepdf = "";
				String testeurl = "";
				int condicao;  
				if(file_url_pdf.size() == name_file_pdf.size()){ // pegar o maior valor para percorrer todos os valores  
				condicao = file_url_pdf.size();//
				condicao = condicao - 1; // aqui estava o erro, a condição tinha um registro amais
					for(int i=0 ; condicao >= i ; i++ ){
						if(i <= file_url_pdf.size()){//para nao dar erro no codigo(tentar acessar um elemento que nao existe)  
							testepdf = file_url_pdf.get(i);
						}if(i <= name_file_pdf.size()){//para nao dar erro no codigo(tentar acessar um elemento que nao existe)  
							testeurl = name_file_pdf.get(i);
						}
						
						URL url = new URL(testepdf);
						URLConnection conection = url.openConnection();
						conection.connect();
						int lenghtOfFile = conection.getContentLength();
						//InputStream input = new BufferedInputStream(url.openStream(), 8192);
						InputStream input = new BufferedInputStream(url.openStream());
						OutputStream output = new FileOutputStream(Environment.getExternalStoragePublicDirectory("/APP/"+testeurl));
						byte[] data = new byte[8192];
						//byte[] data = new byte[1024];
						while ((count = input.read(data)) != -1) {	
						output.write(data, 0, count);
						}						
						output.flush();
						output.close();
						input.close();
					}
				}
Criado 31 de janeiro de 2013
Ultima resposta 31 de jan. de 2013
Respostas 12
Participantes 3