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 !