Alguém pode me ajudar a organizar esse programa?

O programa deve permitir ao usuário informar qual é o tipo de produto (livro, CD ou software) e, com base nesta resposta, solicitar o preenchimento dos atributos de cada tipo de produto. Em seguida, calcular o valor do frete e imprimir os dados do produto e o valor do frete. Obs.: tanto a leitura dos valores quando a impressão devem ser realizadas pelo terminal.

package Loja;

import java.util.Scanner;

public class Principal {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
String descricao="";
String codigo="";
double peso=0;
String CVTpeso="";
double preco=0;
String CVTpreco="";
produtos pdts=new produtos(CVTpreco, CVTpreco, preco, preco);
Software lvs=new Software(descricao, codigo, peso, preco);
Software stfw= new Software(descricao, codigo, peso, preco);
CD CD=new CD (CVTpreco, CVTpreco, preco, preco);

	System.out.println( "Digite uma dessas opções: cd, livros, software");
	String opcao=teclado.nextLine();
	
	switch(opcao) {
	
	case "cd":
		System.out.println("banda ?");
		lvs.banda=teclado.nextLine();
		System.out.println("descrição ?");
		lvs.descricao=teclado.nextLine();
		System.out.println(" codigo ?");
		lvs.codigo=teclado.nextLine();
		System.out.println("peso ?");
		CVTpeso=teclado.nextLine();
		lvs.peso= Double.parseDouble(CVTpeso);
		System.out.println(" preco ?");
		CVTpreco= teclado.nextLine();
		lvs.preco= Double.parseDouble(CVTpreco);
		
		System.out.println(lvs.informacoes());
		
		break;
		
	case "livros":
		System.out.println("autor ?");
		lvs.autor=teclado.nextLine();
		System.out.println("descrição ?");
		lvs.descricao=teclado.nextLine();
		System.out.println(" codigo ?");
		lvs.codigo=teclado.nextLine();
		System.out.println("peso ?");
		CVTpeso=teclado.nextLine();
		lvs.peso= Double.parseDouble(CVTpeso);
		System.out.println(" preco ?");
		CVTpreco= teclado.nextLine();
		lvs.preco= Double.parseDouble(CVTpreco);
		
		System.out.println(lvs.informacoes());
		
		break;
		
	case "software":
		System.out.println("categoria ?");
		lvs.categoria=teclado.nextLine();
		System.out.println("descrição ?");
		lvs.descricao=teclado.nextLine();
		System.out.println(" codigo ?");
		lvs.codigo=teclado.nextLine();
		System.out.println("peso ?");
		CVTpeso=teclado.nextLine();
		lvs.peso= Double.parseDouble(CVTpeso);
		System.out.println(" preco ?");
		CVTpreco= teclado.nextLine();
		lvs.preco= Double.parseDouble(CVTpreco);
		
		System.out.println(lvs.informacoes());

		
	}

	
	

	
}

}
package Loja;

public class CD extends produtos {

public CD(String descricao, String codigo, double peso, double preco) {
	super(descricao, codigo, peso, preco);
}
	
	public String informacoes() {
		return("o codigo é  "+"\n" + codigo + "\n" + "descricao "+" \n" + descricao+ "\n" + "preco  "+ preco+ "\n" + "peso "+ peso+ "\n" + "frete"+(6.50*(peso)));

}

}
package Loja;

public class produtos {
public String banda;
public String descricao;
public String codigo;
public double peso;
public double preco;
public String autor;
public String categoria;

public produtos(String descricao, String codigo, double peso, double preco) {
	// TODO Auto-generated constructor stub
	
	super();
	this.descricao= descricao;
	this.codigo= codigo;
	this.peso=peso;
	this.preco=preco;
		
	}

public String informacoes() {
	return("o codigo é  "+"\n" + codigo + "\n" + "descricao "+" \n" + descricao+ "\n" + "preco  "+ preco+ "\n" + "peso "+ peso+ "\n" + "frete"+(6.50*(peso)));
	
}
}

package Loja;

public class livros extends produtos {

public livros(String descricao, String codigo, double peso, double preco) {
	super(descricao, codigo, peso, preco);
}
	
	public String informacoes() {
		return("o codigo é  "+"\n" + codigo + "\n" + "descricao "+" \n" + descricao+ "\n" + "preco  "+ preco+ "\n" + "peso "+ peso+ "\n" + "frete"+(6.50*(peso)));

}

}

package Loja;

public class Software extends produtos {

public Software(String descricao, String codigo, double peso, double preco) {
	super(descricao, codigo, peso, preco);
	// TODO Auto-generated constructor stub
}

public String banda;
public String descricao;
public String codigo;
public String autor;
public String categoria;

	// TODO Auto-generated constructor stub


public String informacoes() {
	// TODO Auto-generated method stub
	return("o codigo é  "+"\n" + codigo + "\n" + "descricao "+" \n" + descricao+ "\n" + "preco  "+ preco+ "\n" + "peso "+ peso+ "\n" + "frete"+(6.50*(peso)));

}

}

O que você entende por “organizar um programa”?

então, quando eu rodo o programa e coloco o valor exemplo, 20,00 do erro se eu colocar somente 20 ele roda. está dando esses erros e gostaria de organizar melhor

É que organizar um programa é um termo que eu nunca ouvi na área, achei interessante. Então você quer ajuda para corrigir o algoritmo, a lógica ou a sintaxe. Valores do tipo ponto flutuante, segue o padrão de escrita de números norte americano, ou seja, o ponto funciona como separador decimal e a vírgula como separador de milhar. Exemplo:

Padrão BR: R$ 1.296,32
Padrão US: $ 1,296.32 ou simplesmente: $ 1296.32.

Logo, em vez de 20,00, você deve informar 20.00.

No entanto, se você está lendo os dados via Scanner, ele deveria aceitar a vírgula como separador decimal. O que eu indiquei acima só se aplica, salvo engano, em indicações de ponto flutuante literais. Nesse caso, você deve usar o modelo de sem separador de milhar:

R$ 1296,32

De qualquer forma, seu código está bem confuso. Como assim software tem um atributo banda? Se Produto é a classe mãe ela deve ser genérica o suficiente para conter todos os atributos e métodos comuns a todos as classes filhas. Cabe às classes filhas especializar a classe mãe. Logo, banda não faz sentido como atributo de Produto, porque não é um atributo de um software. Porque um objeto livro é do tipo Software?

“lvs” = “livros”?

Porque as classes Produto e Livro estão grafadas em minúsculo, sendo a que a convenção de nomes diz que deve ser em maiúsculo? Porque plural se a convenção diz que deve ser no singular? O que significa CVTpeso e CVTpreco?

1 curtida