Fazer um laço (for ou while) em array

Pessoal estou com uma dúvida, tenho um array carregado com informação.
Agora preciso criar um laço for ou while (acho eu) que percorra esse array e tique em execução enquanto o array contiver dados e assim que já estiver corrido todos os dados a sua execução seja finalizada.

Olá…
bom…se você quer percorrer um array enquanto ele tiver dados você pode usar um for, e dentro da declaração de condições do loop, se seu array for de Strings, você coloca um verificador, enquanto for diferente de arrayStrings[x].equals(null) faça…

Olá…
bom…se você quer percorrer um array enquanto ele tiver dados você pode usar um for, e dentro da declaração de condições do loop, se seu array for de Strings, você coloca um verificador, enquanto for diferente de arrayStrings[x].equals(null) faça…


for (int x = 0; x<arrayStrings.lenght && !arrayStrings[x].equals(null);x++)
{//seu código aqui}

Não sei se é isso que queria saber…se não for, desculpe :oops: >

[quote=petter]Pessoal estou com uma dúvida, tenho um array carregado com informação.
Agora preciso criar um laço for ou while (acho eu) que percorra esse array e tique em execução enquanto o array contiver dados e assim que já estiver corrido todos os dados a sua execução seja finalizada.[/quote]

for(int i = 0; i < seuArray.lenght; i++){ //faça o que quiser aqui }

Se vc tiver usando a classe ArrayList, ao inves de veotr, que eh o que eu acho que vc esta fazendo,…
corrigindo o Ricardo ai:

for(int i = 0; i < suaLista.size(); i++){
// olalolaoa
}

ow faça um forEach:
Ex.:

for(String obj : ArrayDeStrings){
// obj.intValue()... obj.:).. etc..
}

Pessoal, dá um erro de illegal start of expression, mas deve ser do local de onde eu faço o laço for. Olha o meu código abaixo:

Grade.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                for(int x = 0; x < arrayObjetos.lenght && !arrayObjetos[x].equals(null);x++){
                {null, null, new Boolean(false)}
                }
            },
            new String [] {
                "Código", "Razão Social", "Impressão"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.Boolean.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, true
            };

O ideal para mim seria fazer o laço for dentro do new Object[][]. Isso pode ser feito?
Para ciencia é assim que eu alimento o meu array:

ResultSet rs = conexao2.stm.executeQuery();       
                   ArrayList list = new ArrayList();
                   while(rs.next()){
                    list.add(rs.getString("cod_cli"));
                    list.add(rs.getString("razao_soc"));
                   }
                   Object[] arrayObjetos = list.toArray();

Isso acontece porque quando vc faz um

new Object[][]{...}

No reticências não é suposto que tenha instruções java, e sim uma lista de Object[] separados por vírgula
.
Num outro tópico que vc postou perguntando a diferença entre Object[][] e Object[], um colega nosso te disse que o primeiro caso é um array de 2 dimensões. Veja isso, para o DefaultTableModel da seguinte forma:
O primeiro par de colchetes indica uma tupla i da tabela, e o segundo colchete indica uma coluna c da tabela. Resumindo, o primeiro par de colchete indexa as linhas da tabela e o segundo, as colunas.
Veja isso aqui:

Object[][] arr2dim = new Object[][]{
	{"fulano", "silva", Boolean.FALSE},
	{"beltrano, "souza", Boolean.TRUE}
};

Isso seria um array que vc passaria pro seu DefaultTableModel se vc tivesse 3 colunas (nome, sobrenome, foi demitido) na sua tabela e tivesse exibindo informações sobre fulano silva e beltrano souza.

Quanto a alimentação desse Array, vc poderia fazer algo assim:

	ResultSet rs = conexao2.stm.executeQuery();
	ArrayList listOfRows = new ArrayList();
	while(rs.next()) {
		String[] row = {
			rs.getString("NOME"),
			rs.getString("SOBRENOME"),
			rs.getString("DEMITIDO")
		};
		listOfRows.add(row);
	}
	String[][] arrOfRows = new String[listOfRows.size()][];
	for (int i = 0; i < arrOfRows.length; i++) {
		arrOfRows[i] = (String[])listOfRows.get(i);
	}

Cara estou tentando implementar o que vc passou mas dá erro na linha:

String[][] arrOfRows = new String[listOfRows.size()][];

O erro que acusa é o seguinte:

.class expected

O código ficou dessa forma:

ResultSet rs = conexao2.stm.executeQuery();
                ArrayList listOfRows = new ArrayList();
                while(rs.next()) {
                    String[] row = {
 			rs.getString("cod_cli"),
 			rs.getString("razao_soc")
 		};
 		listOfRows.add(row);

Grade.setModel(new javax.swing.table.DefaultTableModel(
            String[][] arrOfRows = new String[listOfRows.size()][];
                for (int i = 0; i < arrOfRows.length; i++) {
                    arrOfRows[i] = (String[])listOfRows.get(i);
            },
            new String [] {
                "Código", "Razão Social", "Impressão"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.Boolean.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, true
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        })

Outra coisa no meu select retorna o valor de duas colunas e a jTable tem 3 colunas onde na verdade a terceira é para deixar uma coluna com jCheckBox para o usuário selecionar. Para fazer isso ao carregar as colunas com o array basta no terceiro valor passar um new boolean por exemplo?

Petter,
Eu fiz um testezinho aqui com uma classe que funciona como se eu já tivesse os dadso do banco nas mãos (Troquei um ResultSet por um Object[][] :shock: ) e não deu nenhum erro parecido com o que vc mencionou (Provavelmente deve ser coisa de IDE. Eu to usando o Eclipse). Olha o código aí:

package temp;

import java.util.ArrayList;

import javax.swing.JFrame;
 
 
 public class TestePetter{
	
	public TestePetter() {
		Object[][] arr2dim = new Object[][]{
			{"fulano", "silva"},
			{"beltrano", "souza"},
			{"cicrano", "santos"}
		 };
		ArrayList listOfRows = new ArrayList();
		for(int i = 0; i < arr2dim.length; i++) {//while(rs.next()){
			String[] row = {
				arr2dim[i][0].toString(),//rs.getString("NOME"),
				arr2dim[i][1].toString(),//rs.getString("SOBRENOME"),
				Boolean.toString(false)
			};
			listOfRows.add(row);
		}
		String[][] arrOfRows = new String[listOfRows.size()][];
		for (int i = 0; i < arrOfRows.length; i++) {
			arrOfRows[i] = (String[])listOfRows.get(i);
		}
		
		for(int i = 0; i < arrOfRows.length; i++) {
			System.out.println("arrOfRows[" + i + "][]");
			for(int j = 0; j < arrOfRows[i].length; j++) {
				System.out.println("\tarrOfRows[i][j]: " + arrOfRows[i][j]);
			}
		}
	}
	
	public static void main(String[] args) {
		
		TestePetter action = new TestePetter();
		System.exit(0);
	}
 }

Quanto ao seu “Outra coisa”, respodondo que sim. Nesse exemplo aqui eu tô passando um false como padrão para essa terceira coluna que não vem do BD.

QQ coisa, pergunte mais, ok?

Valeu. Alterei um pouco a minha lógica aqui e funcionou legal.