Array Multi-dimensional

10 respostas
H

Amigos, duas perguntas:

  1. Eu posso criar uma array de tipos de dados diferentes, exemplo:

    “AC0001”, “ACIDO TIPO 01”, 200.52, “N”, 5
    “ES0151”, “CANETA AZUL”, 12.0, “S”, 0
    “MS0106”, "LIXA D’ÁGUA ", 100.0, “S”, 10

  2. Independente se posso ou não ter tipos de dados diferentes na mesma array, no exemplo acima supondo que todas as informações fossem tipo String, como criaria esta array na Main e passaria a mesma array já com conteúdo para um método ?

Obrigado.

Hugo.

10 Respostas

urubatan

Object[] arr = {{“AC0001”, “ACIDO TIPO 01”, new Float(200.52), “N”, new Integer(5)},
{“ES0151”, “CANETA AZUL”, new Float(12.0), “S”, new Integer(0)},
{“MS0106”, "LIXA D’ÁGUA ", new Float(100.0), “S”, new Integer(10) }};

H

Rodrigo

Obrigado pela ajuda, só faltou a segunda parte, porque eu preciso fazer um metodo aonde receba esta array e lá eu trate as informações contidas na Array. Eu já tentei com uma array simples e até consegui compilar, mas na hora de executar está dando erro. Vc poderia me dar um exemplo simples de como fazer isto com a array que você montou ?

Valeu mesmo !

Hugo.

leonardom

Um exemplo com array de duas dimensões:

public class TesteArray
    {
        public static void main(String args[])
        {
            Object[][] arr = {{"AC0001", "ACIDO TIPO 01", new Float(200.52), "N", new Integer(5)},
                              {"ES0151", "CANETA AZUL", new Float(12.0), "S", new Integer(0)},
                              {"MS0106", "LIXA D'ÁGUA ", new Float(100.0), "S", new Integer(10) }};
            
            printArray(arr);
        }
                
        public void printArray(Object[][] array)
        {
            for (int i=0; i < array.length; i++)
                for (int j=0; j < array[i].length; j++)
                    System.out.println("array[" + i + "," + j + "] = " + array[i][j]);            
        }
    }
urubatan

ups, esqueci de dois colchetes :oops:

ozielneto

Pq voce nao faz o seguinte??

Cria uma classe Produto e manipula um Array dessa classe dentro de uma classe Estoque???

class Produto {

	private String codigo;
	private String descricao;
	private Float preco;
	private String status;
	private Integer quantidade;

	public Produto(String codigo, String descricao, Float preco, String status, Integer quantidade) {
		this.codigo = codigo;
		this.descricao = descricao;
		this.preco = preco;
		this.status = status;
		this.quantidade = quantidade;
	}

	public String getCodigo() {
		return codigo;
	}

	public String getDescricao() {
		return descricao;
	}

	public Float getPreco() {
		return preco;
	}

	public String getStatus() {
		return status;
	}

	public Integer getQuantidade() {
		return quantidade;
	}

	public String toString() {
		return codigo+":"+descricao+":"+preco+":"+status+":"+quantidade;
	}

}

class Estoque {

	private Produto[] produtos;
	private int contador;

	public Estoque(int quantidade) {
		produtos = new Produto[quantidade];
		contador = 0;
	}

	public int adciona(Produto produto) {
		int posicao = contador;
		produtos[posicao] = produto;
		contador++;
		return posicao;
	}

	public Produto recupera(int posicao) {
		return produtos[posicao];
	}

	public Produto recupera(String codigo) {
		Produto p = null;
		for (int i=0; i<produtos.length; i++) {
			if ( produtos[i].getCodigo().equals(codigo) ) {
				p = produtos[i];
				break;
			}
		}
		return p;
	}
}

class TestaEstoque {
	
	public static void main(String a[]) {
		Estoque estoque = new Estoque(100);

		Produto p1 = new Produto("0001","Caneta", new Float(2.5), "N", new Integer(10) );
		Produto p2 = new Produto("0002","CD", new Float(32.0), "S", new Integer(5) );
		Produto p3 = new Produto("0003","Livro", new Float(55.67), "N", new Integer(4) );

		int pos1 = estoque.adciona( p1 );
		int pos2 = estoque.adciona( p2 );
		int pos3 = estoque.adciona( p3 );

		Produto p11 = estoque.recupera( pos1 );
		System.out.println( p11 );
		Produto p21 = estoque.recupera( pos2 );
		System.out.println( p21 );
		Produto p31 = estoque.recupera( "0003" );
		System.out.println( p31 );

	}
}

[]'s

thiagorani

Talvez isso ajude:
http://www.guj.com.br/servlet/guj?PARSE=true&MAMUTE_ACTION=br.com.guj.action.ListArticle&MAMUTE_TEMPLATE=ShowArticle&LIST_ARTICLE=single&ArticleId=31&PAGE=1

H

Oziel

Obrigado pelo exemplo, vou utiliza-lo para outros casos. Os dados que coloquei na array foram ilustrativos, a situação aonde eu vou utilizar a array é outra que ficaria um pouco complicada para explicar. Valeu !

Rodrigo

O seu exemplo ajuda o meu problema, mas bem na passagem da array para o método é que está o erro quando compilo, aonde é para por os dois colchetes ? Abaixo o erro na compilação.

C:JcProjectsP1TestArray.java:9: non-static method printArray(java.lang.Object[][]) cannot be referenced from a static context
printArray(arr);
^

Obrigado mais uma vez.

Hugo.

Rafael_Steil

Leia a mensagem de erro:

JcProjectsP1TestArray.java:9: non-static method printArray(java.lang.Object[][]) [b]cannot be referenced from a static context [/b]
printArray(arr);

Voce esta tentando acessar um metodo nao estatico dentro de um metodo estatico… Por exemplo, vc tem printArray() mas tenta usar ele no static void main() sem ter uma instancia da classe.

Rafael

H

Rodrigo

Estou lendo o artigo.

Obrigado.

leonardom

“Rafael Steil”:

Voce esta tentando acessar um metodo nao estatico dentro de um metodo estatico… Por exemplo, vc tem printArray() mas tenta usar ele no static void main() sem ter uma instancia da classe.

Rafael

Ah! sim, me desculpe na hora que montei o exemplo esqueci de colocar o modificador static.

public class TesteArray
    {
        public static void main(String args[])
        {
            Object[][] arr = {{"AC0001", "ACIDO TIPO 01", new Float(200.52), "N", new Integer(5)},
                              {"ES0151", "CANETA AZUL", new Float(12.0), "S", new Integer(0)},
                              {"MS0106", "LIXA D'ÁGUA ", new Float(100.0), "S", new Integer(10) }};
           
            printArray(arr);
        }
               
        public static void printArray(Object[][] array)
        {
            for (int i=0; i < array.length; i++)
                for (int j=0; j < array[i].length; j++)
                    System.out.println("array[" + i + "," + j + "] = " + array[i][j]);           
        }
    }

Acho que agora está tudo ok.

Criado 30 de janeiro de 2004
Ultima resposta 30 de jan. de 2004
Respostas 10
Participantes 6