[Resolvido] Dúvida com vetor ou Array

Estou com um trabalho da faculdade.
Tenho que fazer o seguinte:
Faça um programa em Java que receba o nome, o valor por kilo e o preço de 5 produtos e
logo em seguida imprima o nome, o valor total por produto e a soma total dos 5 produtos.

Classe Dados.java

public class Dados {
   private String nome;
   private Double valorKilo;
   private Double valorPeso;

    public Dados() {
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Double getValorKilo() {
        return valorKilo;
    }

    public void setValorKilo(Double valorKilo) {
        this.valorKilo = valorKilo;
    }

    public Double getValorPeso() {
        return valorPeso;
    }

    public void setValorPeso(Double valorPeso) {
        this.valorPeso = valorPeso;
    }



}

Classe Principal.java

public class Main {

    public static void main(String[] args) {


        Dados dados[][] = new Dados[5][1];
      //  double info [];

        Scanner teclado = new Scanner(System.in);
        Dados conteudo = new Dados();


      //   double exemplo =0;
         double soma = 0;
          for (int lin = 1; lin < dados.length; lin++) {
            for (int col = 0; col < dados[lin].length; col++) {
                System.out.println("Produto" + lin);

                System.out.println("Digite o nome");
                conteudo.setNome(teclado.next());

                System.out.println("Digite o Kilo");
                conteudo.setValorKilo(teclado.nextDouble());
  
                System.out.println("Digite o preco");
                conteudo.setValorPeso(teclado.nextDouble());

               // Aqui estou somando os valores
                soma += conteudo.getValorKilo()+ conteudo.getValorPeso();
            }

           
        }
          for (int lin = 1; lin < dados.length; lin++) {
            for (int col = 0; col < dados[lin].length; col++) {

                System.out.println("Produto" + lin);
                System.out.println("Nome do produto" + conteudo.getNome());
                System.out.println("Digite o Kilo" + conteudo.getValorKilo());
                System.out.println("Digite o preco" + conteudo.getValorPeso());

            }

        }
          System.out.println("A soma total dos 5 produtos é" + soma);




    }
}

Eu queria preencher um vetor para ser exibido no final com todos os dados, pois do jeito que está ele, exibi todos mas só pega o ultimo resultado

É porque vc criou um único objeto do tipo Dados.

Passe essa linha:

 Dados conteudo = new Dados();  

Para dentro do for, antes da linha:

 System.out.println("Produto" + lin);  

Outra coisa, não era mais fácil deixar o array de Dados unidimensional?

Use um nome mais descritivo para a classe. Ao invés de Dado seria melhor você chamar de Produto. Também seria uma boa você acrescentar nela um método chamado getPrecoTotal():

public double getPrecoTotal() { return valorKilo * valorPeso; }

Finalmente, prefira usar double no lugar de Double.

Não precisa fazer uma matriz (ou array multidimensional)

Basta fazer o seguinte

[code]
Dados[] dados = new Dados[5];

Dados dado1 = new Dados();
dados[0] = dado1;

Dados dado5 = new Dados();
dados[4] = dado5;

for (int i = 0; i < dados.length; i++) {
Dados dado = dados[i];
System.out.println(dado.getValor());
//imprime os outros trecos
}[/code]

[quote=ViniGodoy]É porque vc criou um único objeto do tipo Dados.

Passe essa linha:

 Dados conteudo = new Dados();  

Para dentro do for, antes da linha:

 System.out.println("Produto" + lin);  

Outra coisa, não era mais fácil deixar o array de Dados unidimensional?

Use um nome mais descritivo para a classe. Ao invés de Dado seria melhor você chamar de Produto. Também seria uma boa você acrescentar nela um método chamado getPrecoTotal():

public double getPrecoTotal() { return valorKilo * valorPeso; }

Finalmente, prefira usar double no lugar de Double.[/quote]

Blz vou realizar as alterações para ver se funciona

[quote=ViniGodoy]É porque vc criou um único objeto do tipo Dados.

Passe essa linha:

 Dados conteudo = new Dados();  

Para dentro do for, antes da linha:

 System.out.println("Produto" + lin);  

Outra coisa, não era mais fácil deixar o array de Dados unidimensional?

Use um nome mais descritivo para a classe. Ao invés de Dado seria melhor você chamar de Produto. Também seria uma boa você acrescentar nela um método chamado getPrecoTotal():

public double getPrecoTotal() { return valorKilo * valorPeso; }

Finalmente, prefira usar double no lugar de Double.[/quote]

Fiz as mudanças que você falou

Classe Produto


public class Produto {
   private String nome;
   private double valorKilo;
   private double valorPeso;
   private double precoTotal;

    public Produto() {
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public double getPrecoTotal() {
        return valorKilo * valorPeso;
    }

    public void setPrecoTotal(double precoTotal) {
        this.precoTotal = precoTotal;
    }

    public double getValorKilo() {
        return valorKilo;
    }

    public void setValorKilo(double valorKilo) {
        this.valorKilo = valorKilo;
    }

    public double getValorPeso() {
        return valorPeso;
    }

    public void setValorPeso(double valorPeso) {
        this.valorPeso = valorPeso;
    }

}

Classe principal

public class Main {

    public static void main(String[] args) {

        Produto dados[][] = new Produto[5][1];

        Scanner teclado = new Scanner(System.in);
        
         double soma = 0;

          for (int lin = 1; lin < dados.length; lin++) {
            for (int col = 0; col < dados[lin].length; col++) {
            Produto conteudo = new Produto();
                System.out.println("Produto" + lin);

                System.out.println("Digite o nome");
                conteudo.setNome(teclado.next());

                System.out.println("Digite o Kilo");
                conteudo.setValorKilo(teclado.nextDouble());
  
                System.out.println("Digite o preco");
                conteudo.setValorPeso(teclado.nextDouble());

                // Aqui estou somando os valores
                soma += conteudo.getPrecoTotal();
           
            }

           
        }

         // Não estou conseguindo resgatar o  Produto conteudo = new Produto();

         for (int lin = 1; lin < dados.length; lin++) {
            for (int col = 0; col < dados[lin].length; col++) {
                System.out.println("Produto" + lin);
                System.out.println("Nome do produto" + conteudo.getNome());
                System.out.println("Digite o Kilo" + conteudo.getValorKilo());
                System.out.println("Digite o preco" + conteudo.getValorPeso());

            }

        }
       

          System.out.println("A soma total dos 5 produtos é " + soma );

    }

Não estou conseguindo resgatar o conteudo agora pois ele esta dentro do 1º " FOR ", como eu restado os dados no " 2º FOR"

[quote=tonydesign][quote=ViniGodoy]É porque vc criou um único objeto do tipo Dados.

Passe essa linha:

 Dados conteudo = new Dados();  

Para dentro do for, antes da linha:

 System.out.println("Produto" + lin);  

Outra coisa, não era mais fácil deixar o array de Dados unidimensional?

Use um nome mais descritivo para a classe. Ao invés de Dado seria melhor você chamar de Produto. Também seria uma boa você acrescentar nela um método chamado getPrecoTotal():

public double getPrecoTotal() { return valorKilo * valorPeso; }

Finalmente, prefira usar double no lugar de Double.[/quote]

Fiz as mudanças que você falou

Classe Produto


public class Produto {
   private String nome;
   private double valorKilo;
   private double valorPeso;
   private double precoTotal;

    public Produto() {
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public double getPrecoTotal() {
        return valorKilo * valorPeso;
    }

    public void setPrecoTotal(double precoTotal) {
        this.precoTotal = precoTotal;
    }

    public double getValorKilo() {
        return valorKilo;
    }

    public void setValorKilo(double valorKilo) {
        this.valorKilo = valorKilo;
    }

    public double getValorPeso() {
        return valorPeso;
    }

    public void setValorPeso(double valorPeso) {
        this.valorPeso = valorPeso;
    }

}

Classe principal

public class Main {

    public static void main(String[] args) {

        Produto dados[][] = new Produto[5][1];

        Scanner teclado = new Scanner(System.in);
        
         double soma = 0;

          for (int lin = 1; lin < dados.length; lin++) {
            for (int col = 0; col < dados[lin].length; col++) {
            Produto conteudo = new Produto();
                System.out.println("Produto" + lin);

                System.out.println("Digite o nome");
                conteudo.setNome(teclado.next());

                System.out.println("Digite o Kilo");
                conteudo.setValorKilo(teclado.nextDouble());
  
                System.out.println("Digite o preco");
                conteudo.setValorPeso(teclado.nextDouble());

                // Aqui estou somando os valores
                soma += conteudo.getPrecoTotal();
           
            }

           
        }

         // Não estou conseguindo resgatar o  Produto conteudo = new Produto();

         for (int lin = 1; lin < dados.length; lin++) {
            for (int col = 0; col < dados[lin].length; col++) {
                System.out.println("Produto" + lin);
                System.out.println("Nome do produto" + conteudo.getNome());
                System.out.println("Digite o Kilo" + conteudo.getValorKilo());
                System.out.println("Digite o preco" + conteudo.getValorPeso());

            }

        }
       

          System.out.println("A soma total dos 5 produtos é " + soma );

    }

Não estou conseguindo resgatar o conteudo agora pois ele esta dentro do 1º " FOR ", como eu restado os dados no " 2º FOR" [/quote]

Cara como eu te disse, tu precisa de apenas um array com 5 posições!

Cara como eu te disse, tu precisa de apenas um array com 5 posições! [/quote]

Eu também disse isso…

De qualquer forma é só fazer:

Produto conteudo = dados[lin][col];

Cara mais do jeito que o ViniGodoy me explicou já esta funcionando, só que imprime seu eu colocar os dados do 2º for no 1º !!

Mais eu queria imprimir do jeito que está mesmo …

De qualquer forma é tosco criar uma dimensão com [1]. Se for para fazer isso, não crie e não se complique:

[code]public class Main {
public static void main(String[] args) {
Produto produtos[] = new Produto[5];
Scanner teclado = new Scanner(System.in);

  double soma = 0;

  for (int i = 0; lin < produtos.length; i++) {
     Produto produto = new Produto();
     System.out.println("Produto" + i);

     System.out.println("Digite o nome");
     produto.setNome(teclado.nextLine());

     System.out.println("Digite o Kilo");
     produto.setValorKilo(Double.parseDouble(teclado.nexLine()));

     System.out.println("Digite o preco");
     produto.setValorPeso(Double.parseDouble(teclado.nexLine()));

     // Aqui estou somando os valores
     soma += produto.getPrecoTotal();
     produtos[i] = produto;           
  }

  for (Produto produto : produtos) {
     System.out.println("Nome do produto" + produto.getNome());
     System.out.println("Digite o Kilo" + produto.getValorKilo());
     System.out.println("Digite o preco" + produto.getValorPeso());
  }
  System.out.println("A soma total dos 5 produtos é " + soma);

}
}
[/code]

[quote=ViniGodoy]De qualquer forma é tosco criar uma dimensão com [1]. Se for para fazer isso, não crie e não se complique:

[code]public class Main {
public static void main(String[] args) {
Produto produtos[] = new Produto[5];
Scanner teclado = new Scanner(System.in);

  double soma = 0;

  for (int i = 1; lin < produtos.length; i++) {
     Produto produto = new Produto();
     System.out.println("Produto" + i);

     System.out.println("Digite o nome");
     produto.setNome(teclado.nextLine());

     System.out.println("Digite o Kilo");
     produto.setValorKilo(Double.parseDouble(teclado.nexLine()));

     System.out.println("Digite o preco");
     produto.setValorPeso(Double.parseDouble(teclado.nexLine()));

     // Aqui estou somando os valores
     soma += produto.getPrecoTotal();
     produtos[i] = produto;           
  }

  for (Produto produto : produtos) {
     System.out.println("Nome do produto" + produto.getNome());
     System.out.println("Digite o Kilo" + produto.getValorKilo());
     System.out.println("Digite o preco" + produto.getValorPeso());
  }
  System.out.println("A soma total dos 5 produtos é " + soma);

}
}
[/code][/quote]

Você colocou para rodar isso ae ?? Pois eu coloquei e não rodou …
Acho melhor eu só alterar aquele que a gente estava mexendo, pois aquele esta funcionando só quando eu coloco os dados do 2º For no 1º For
Ainda não esta funcionando, tem mais alguma dica ?

Não coloquei, mas já corrigi ali em cima. É que o primeiro for tem que começar em 0, não em 1.

Aquela criação de um array bidimensional, com uma segunda dimensão de tamanho 1, é muitíssimo feia. Eu acho melhor corrigir.

Não coloquei, mas já corrigi ali em cima. É que o primeiro for tem que começar em 0, não em 1.

Aquela criação de um array bidimensional, com uma segunda dimensão de tamanho 1, é muitíssimo feia. Eu acho melhor corrigir.

[/quote]

Vlw muito obrigado daqui pra frente eu vou arrumando do meu jeito

Ficou assim, Classe principal

 public class Main {
    public static void main(String[] args) {
       Produto produtos[] = new Produto[5];
       Scanner teclado = new Scanner(System.in);

       double soma = 0;
      
       for (int i = 0; i < produtos.length; i++) {
          Produto produto = new Produto();
          System.out.println("#########################");
          System.out.println("Produto" + i);

          System.out.println("Digite o nome ");
          produto.setNome(teclado.next());

          System.out.println("Digite o Kilo ");
          produto.setValorKilo(Double.parseDouble(teclado.next()));

          System.out.println("Digite o preco ");
          produto.setValorPeso(Double.parseDouble(teclado.next()));

          // Aqui estou somando os valores
          soma += produto.getPrecoTotal();
          produtos[i] = produto;
       }

       for (Produto produto : produtos) {
          System.out.println("########### NOME  [ " + produto.getNome()+ " ]       ###########" );
          System.out.println("########### KILO  [ " + produto.getValorKilo()+ " ]  ###########");
          System.out.println("########### PRECO [ " + produto.getValorPeso()+ " ] ###########");
          System.out.println("\n");

       }
       System.out.println("A soma total dos 5 produtos é " + soma);
   }
 }

Muito obrigado pessoal !