Erro de lógica (laço) [RESOLVIDO]

Boa tarde pessoal!

Estou tendo um problema de lógica. Tenho a seguinte situação: varias listas, por ex: ListaA 15 posições, ListaB 100 posições, N listas. Necessito gerar todas as combinações possíveis.
ListaA ListaB
Valor A1 ValorB1
Valor A1 ValorB2
Valor A1 ValorB3

Tentei utilizando varios laços (for) encadeados, sem sucesso. Gostaria de pedir a ajuda de vcs.
Obs.: O número de listas é dinâmico.

Muito obrigado.

opss foi mal post errado

Não entendi o problema.
Como assim o número de listas é dinâmico?

posta o codigo do for encadeado porque é esse o caminho

drsmachado. No exemplo expliquei com as ListaA e ListaB, mas eu posso ter a ListaC, ListaD, e assim por diante.
Sobre o problema, preciso montar as todas as combinações possíveis, isto cada elemento e cada lista.

Algo +/- assim que vc quer?

[code]public class Listas {

public static void main(String[] args) {
	for (int a = 1; a <= 15; a++){
		for (int b = 1; b <= 100; b++){
			System.out.println("ListaA"+a+" ListaB"+b);
		}
	}
}

}[/code]

So implementar do jeito que vc deseja com arrays.

Olá renatogrosz. Infelizmente não consegui montar o pseudo-código (estrutura) para este problema, este seria meu problema.

Frantic Avenger. Acredito que o seja algo semelhante a isto sim, porém o numero de “for” vai depender do número de listas que tiver, além de que cada lista ter um número diferente de elementos.

mas você precisa explicar melhor o que quer.

no caso de ter 3 listas, seria listaA[0] + listaB[0] + listaC[0] uma combinação? ou seria algo assim: listaA[0] + listaB[0] // E depois que foram feitas todas as combinações entre as listas A e B, partimos para uma próxima listaA[0] + listaC[0] ?

Pensei num solução um tanto quanto complexa.
Vc pode percorrer o último array até o final enquanto todos outros estão na primeira posição;
Penúltimo array incrementa 1 na sua posição e o último array percorre até o final e incrementa penúltimo novamente;
Quando o penúltimo array chegar no final faz o mesmo para o antepenúltimo;

Considerei isso, é porque não quis colocar um input no exemplo.

listaA[0]	listab[0]	listac[0]
listaA[0]	listab[0]	listac[1]
listaA[0]	listab[0]	listac[2]
listaA[0]	listab[0]	listac[3]
listaA[0]	listab[0]	listac[4]
listaA[0]	listab[0]	listac[5] //acabou a listaC
listaA[0]	listab[1]	listac[0]
listaA[0]	listab[1]	listac[1]
listaA[0]	listab[1]	listac[2]
listaA[0]	listab[1]	listac[3]
listaA[0]	listab[1]	listac[4]
listaA[0]	listab[1]	listac[5]

Desculpe a dificuldade em explicar o problema.

Quer fazer um produto cartesiano…

Até onde entendi, acho que este código resolve o que você precisa:

Esta mal programado, talvez não seja a melhor solução, mas acho que te atende.

public class Main {
	
	public static void main(String[] args) {
		
		String[] list1 = {"1", "2", "3"};
		String[] list2 = {"4", "5", "6"};
		String[] list3 = {"7", "8", "9"};
		test(list1, list2, list3);
	}
	
	public static void test(String[] ... array) {
		
		if(array != null) {
			int length = array.length;
			for(int index = 0; index < length; index++) {
				String[] list = array[index];
				
				int initValue = index + 1;
				for(int indexSub = initValue; indexSub < length; indexSub++) {
					String[] listSub = array[indexSub];
					
					for(String value : list) {
						for(String valueSub : listSub) {
							// comparar ou fazer o que deseja com os valores
							System.out.println(value + " " + valueSub);
						}
					}
				}
			}
		}
	}
}

Obrigado a todos pelas respostas, acabei limitando o numero de colunas em 5, criando para cada situação (1,2,3, n colunas) estaticamente. Assunto encerrado.