Metodo de juros

Boa noite a todos.
Estou com um probleminha estou tentando otimizar um código feito por mim, mais por treinamento mesmo… O sistema funciona desta forma: O sistema pergunta a quantidade de camisas pequenas,medias e grandes que desejo comprar… O sistema vai imprimir minha lista de pedidos, o valor total que irá custar, o valor com desconto de 10%, e faz uma pergunta “Você quer pagar no cartão (Cada parcela tem um acrescimento de 7%) ? SIM OU NÃO” , estou com um probleminha nesta parte… Não estou conseguindo fazer o Metodo e atribuir no programa Principal.

Depois da resposta for SIM, o programa iria perguntar se deseja ser em 1 , 2, 3 x … A cada parcela o juros acrestenvava 1,5% por parcelas… ex: se fosse 2 seria 3%, e assim respectivamente…

Codigos:
ProgramaPrincipal

package Treinando.ex3;
import java.util.Scanner;

public class ProgramaPrincipal {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Fabrica cc = new Fabrica();

System.out.println("Seja bem vindo a loja do Romeu");
System.out.println("Quantas camisas pequenas?");
Integer qtdCamisasPequenas = scan.nextInt();
System.out.println("Quantas camisas medias?");
Integer qtdCamisasMedias = scan.nextInt();
System.out.println("Quantas camisas grandes?");
Integer qtdCamisasGrandes = scan.nextInt();

Double valorTotal = cc.calcularCamisas(qtdCamisasPequenas, qtdCamisasMedias, qtdCamisasGrandes);
Double valorDesconto = cc.calcularDesonto(qtdCamisasPequenas, qtdCamisasMedias, qtdCamisasGrandes);
System.out.println("Seu pedido:\n" + qtdCamisasGrandes + " camisa(s) grande(s), " + qtdCamisasMedias + " camisa(s) media(s), " + qtdCamisasPequenas + " camisa(s) pequena(s).");
System.out.println("O valor total:\nR$" + valorTotal);
System.out.println("O valor com desconto:\nR$" + valorDesconto);
System.out.println("Você quer pagar no cartão (Cada parcela tem um acrescimento de 1.5%) ? SIM OU NÃO");
String cartao = scan.next();
System.out.println("Quantas parcelas? (1 , 2, 3)" );
Integer parcelas = scan.nextInt();
System.out.println("Em 1x: ");
System.out.println("Valor em uma parcela: R$" + cc.calcularCartao(qtdCamisasGrandes, qtdCamisasMedias, qtdCamisasPequenas, 1));
System.out.println("Em 2x: ");
System.out.println("Valor em uma parcela: R$" + cc.calcularCartao(qtdCamisasGrandes, qtdCamisasMedias, qtdCamisasPequenas, 2));
System.out.println("Em 3x: ");
System.out.println("Valor em uma parcela: R$" + cc.calcularCartao(qtdCamisasGrandes, qtdCamisasMedias, qtdCamisasPequenas, 3));
}
}

Fabrica:

package Treinando.ex3;

package Treinando.ex3;

public class Fabrica {
private double vlrCP = 10.0;
private double vlrCM = 15.0;
private double vlrCG = 20.0;
private double descFixo = 0.10; // 10%
private double jurosFixo = 0.03; // 3%
private double jurosFixo2 = 0.06; //6%
private double jurosFixo3 = 0.09; //9%

public double calcularCamisas(int qtdCP, int qtdCM, int qtdCG) {
	double total = (vlrCP * qtdCP) + (vlrCM * qtdCM) + (vlrCG * qtdCG);
	return total;
}

public double calcularDesonto(int qtdCP, int qtdCM, int qtdCG) {
	double total = calcularCamisas(qtdCP, qtdCM, qtdCG);
	return total - (total * descFixo);
}
public Double calcularCartao(int qtdCP, int qtdCM, int qtdCG, Integer resposta) {
	Double total = calcularCamisas(qtdCP, qtdCM, qtdCG);
	switch (resposta) {
	case 1:
		total = total + (total * jurosFixo);
        break;
	case 2:
		total = total + (total *jurosFixo2);
        break;
	case 3:
		total = total + (total *jurosFixo3);
        break;
	default:
		System.out.println("Opção invalida");
	}
	return total;
}

}

1 curtida

Alguem?

Olá,

De uma lida sobre atributos de classes.

Você não está conseguindo fazer o método para calcular o juros de cada parcela é isso ?

Então o problema no caso é na hora de perguntar: Sim ou não… Se a resposta for sim… ele vai pra proxima pergunta pro cliente informar quantas parcelas, 1 , 2 ou 3… E eu queria que funcionasse assim:

Você deseja pagar no cartão? (1-SIM 2- NAO)
Se for 2: O Programa irá finalizar "Obrigado pela compra"
Se for 1:
Quantas parcelas?
Se for digitado 1:
Vai informar o valor de 1 parcela…
E o programa vai tornar responder, Deseja parcelar em mais? Ou deseja finalizar?
Se a pessoa informar 2… vai falar o valor dos juros2 , se caso falar finalizar o programa sera finalizado…

Essa solução que não estou conseguindo fazer, conseguir fazer o metodo…

Essa linha…

String cartao = scan.next();

Se você quer 1 ou 2 melhor fazer assim…

int cartao = scan.nextInt();

A lógica para o menu pode começar assim…

switch (cartao) {
    case 1:
        //todo o resto vem aqui...
        break;
    case 2:
        System.out.println("Obrigado pela compra");
        break;
    default:
        System.out.println("Opção inválida!");
}

Uma coisa que está repetindo muito em cada método, é a passagem das quantidades de cada tipo de camisa, e creio que o @cido18 queria lhe falar sobre atributos de instância/objeto… pesquise a respeito…

Na sua classe você pode ao criar a fábrica, pedir as quantidades já na construção (instância) do objeto assim…

Fabrica cc = new Fabrica(qtdCamisasPequenas, qtd...);

Outra questão, sua classe Fabrica está com muitas responsabilidades, ela fabrica as camisas, fecha pedido e ainda cuida da forma de pagamento, melhor estudar outras formas de separar essas tarefas… inclusive a própria Camisa…