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.
publicclassMain{publicstaticvoidmain(String[]args){Dadosdados[][]=newDados[5][1];// double info [];Scannerteclado=newScanner(System.in);Dadosconteudo=newDados();// double exemplo =0;doublesoma=0;for(intlin=1;lin<dados.length;lin++){for(intcol=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 valoressoma+=conteudo.getValorKilo()+conteudo.getValorPeso();}}for(intlin=1;lin<dados.length;lin++){for(intcol=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
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.
thiago.correa
Não precisa fazer uma matriz (ou array multidimensional)
Basta fazer o seguinte
Dados[]dados=newDados[5];Dadosdado1=newDados();dados[0]=dado1;....Dadosdado5=newDados();dados[4]=dado5;for(inti=0;i<dados.length;i++){Dadosdado=dados[i];System.out.println(dado.getValor());//imprime os outros trecos}
tonydesign
ViniGodoy:
É porque vc criou um único objeto do tipo Dados.
Passe essa linha:
Dadosconteudo=newDados();
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.
Blz vou realizar as alterações para ver se funciona
tonydesign
ViniGodoy:
É porque vc criou um único objeto do tipo Dados.
Passe essa linha:
Dadosconteudo=newDados();
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.
publicclassMain{publicstaticvoidmain(String[]args){Produtodados[][]=newProduto[5][1];Scannerteclado=newScanner(System.in);doublesoma=0;for(intlin=1;lin<dados.length;lin++){for(intcol=0;col<dados[lin].length;col++){Produtoconteudo=newProduto();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 valoressoma+=conteudo.getPrecoTotal();}}// Não estou conseguindo resgatar o Produto conteudo = new Produto();for(intlin=1;lin<dados.length;lin++){for(intcol=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"
thiago.correa
tonydesign:
ViniGodoy:
É porque vc criou um único objeto do tipo Dados.
Passe essa linha:
Dadosconteudo=newDados();
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.
publicclassMain{publicstaticvoidmain(String[]args){Produtodados[][]=newProduto[5][1];Scannerteclado=newScanner(System.in);doublesoma=0;for(intlin=1;lin<dados.length;lin++){for(intcol=0;col<dados[lin].length;col++){Produtoconteudo=newProduto();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 valoressoma+=conteudo.getPrecoTotal();}}// Não estou conseguindo resgatar o Produto conteudo = new Produto();for(intlin=1;lin<dados.length;lin++){for(intcol=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"
Cara como eu te disse, tu precisa de apenas um array com 5 posições!
ViniGodoy
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:
Produtoconteudo=dados[lin][col];
tonydesign
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 …
ViniGodoy
De qualquer forma é tosco criar uma dimensão com [1]. Se for para fazer isso, não crie e não se complique:
publicclassMain{publicstaticvoidmain(String[]args){Produtoprodutos[]=newProduto[5];Scannerteclado=newScanner(System.in);doublesoma=0;for(inti=0;lin<produtos.length;i++){Produtoproduto=newProduto();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 valoressoma+=produto.getPrecoTotal();produtos[i]=produto;}for(Produtoproduto: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);}}
tonydesign
ViniGodoy:
De qualquer forma é tosco criar uma dimensão com [1]. Se for para fazer isso, não crie e não se complique:
publicclassMain{publicstaticvoidmain(String[]args){Produtoprodutos[]=newProduto[5];Scannerteclado=newScanner(System.in);doublesoma=0;for(inti=1;lin<produtos.length;i++){Produtoproduto=newProduto();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 valoressoma+=produto.getPrecoTotal();produtos[i]=produto;}for(Produtoproduto: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);}}
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 ?
ViniGodoy
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.
tonydesign
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.
Vlw muito obrigado daqui pra frente eu vou arrumando do meu jeito
Ficou assim, Classe principal
publicclassMain{publicstaticvoidmain(String[]args){Produtoprodutos[]=newProduto[5];Scannerteclado=newScanner(System.in);doublesoma=0;for(inti=0;i<produtos.length;i++){Produtoproduto=newProduto();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 valoressoma+=produto.getPrecoTotal();produtos[i]=produto;}for(Produtoproduto: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);}}