Dúvidas em resolver uma parte do exercício

Caros membros do forum, boa noite.
O professor passou um exercício para solucionar, porém estou com uma dúvida. Para um melhor entendimento, segue o exercício:
Crie uma classe chamada Fatura para que uma loja de suprimentos de informática possa utilizá-la para representar uma fatura de um item vendido na loja. Uma fatura deve incluir quatro partes, sendo o número da fatura (int), a descrição da fatura (String), quantidade de itens comprados (int) e preço unitário do produto (float). Criar os métodos:
a) Métodos set e get para os atributos
b) Método de nome calculaFatura que retorna o total da fatura (quantidade * preço)
c) Método de nome somaFaturas que recebe outra fatura e retorna o preço total da soma das faturas
d) Método de nome aplicaDesconto que recebe um valor de desconto(int) e aplica esse desconto no preço individual do item.[color=red] [/color]

import java.util.Scanner;
public class Fatura {
	private int numero_fatura, qtde_itens_comprados;
	private String descr_fatura;
	private float preco_unit,total_fatura;
	Scanner input = new Scanner(System.in);
	
	public int getNumero_fatura() {
		return numero_fatura;
	}
	public void setNumero_fatura(int numero_fatura) {
		System.out.println("Digite o número da fatura:");
		numero_fatura=input.nextInt();
		this.numero_fatura = numero_fatura;
	}
	public int getQtde_itens_comprados() {
		return qtde_itens_comprados;
	}
	public void setQtde_itens_comprados(int qtde_itens_comprados) {
		System.out.println("Informe a quantidade de itens comprados: ");
		qtde_itens_comprados = input.nextInt();
		this.qtde_itens_comprados = qtde_itens_comprados;
	}
	public String getDescr_fatura() {
		return descr_fatura;
	}
	public void setDescr_fatura(String descr_fatura) {
		System.out.println("Informe o descritivo da fatura: ");
		descr_fatura = input.next();
		this.descr_fatura = descr_fatura;
	}
	public float getPreco_unit() {
		return preco_unit;
	}
	public void setPreco_unit(float preco_unit) {
		System.out.println("Qual o valor do preço unitário?");
		preco_unit = input.nextFloat();
		this.preco_unit = preco_unit;
	}
	
	public void calcularFatura(){
		total_fatura = preco_unit * qtde_itens_comprados;
		System.out.println("O valor total da fatura é: R$"+ total_fatura);
	}
	
	public void somaFaturas(int numero_fatura2, int qtde_itens_comprados2, float preco_unit2,float total_fatura2, float total_faturas){
		System.out.println("Qual o numero da próxima fatura?");
		numero_fatura2 = input.nextInt();
		
		System.out.println("Informe a quantidade de itens comprados da fatura n°" + numero_fatura2 + ": ");
		qtde_itens_comprados2 = input.nextInt();
		
		System.out.println("Informe o preço unitário: ");
		preco_unit2 = input.nextFloat();
		
		total_fatura2 = preco_unit2 * qtde_itens_comprados2;
		System.out.println("O valor total da segunda fatura é: R$" + total_fatura2);
			
		total_faturas = Fatura.this.total_fatura + total_fatura2;
		System.out.println("O total das faturas é de: R$" + total_faturas);
		
	}
	
	public void aplicaDesconto(int desconto, int vlr_total_desconto){
		System.out.println("Qual o valor do desconto?");
		desconto = input.nextInt();
	}

	public static void main(String args[]){
		Fatura fat = new Fatura();
		
		fat.setNumero_fatura(0);
		fat.setDescr_fatura(null);
		fat.setQtde_itens_comprados(0);
		fat.setPreco_unit(0);
		fat.calcularFatura();
		fat.somaFaturas(0, 0, 0, 0, 0);
		fat.aplicaDesconto(0, 0);
	}
}

Estes último ítem eu não consigo fazer de forma alguma. Eu não sei como aplicar o desconto em R$ em cada item comprado.

Peço a ajuda de vocês.

Grato.

Junior

PS: Eu sou novato em programação, caso o código esteja muito grande, peço desculpas.

Caro Junior_SP,

a forma que você está capturando os valores não é correta.

A classe Fatura deve receber o valor de seu atributo via método set. Exemplo:

	public static void main(String args[]){

		Scanner input = new Scanner(System.in);	
		Fatura fat = new Fatura();

		System.out.println("Digite o número da fatura:");
		
		fat.setNumero_fatura(input.nextInt());

		...
	}

Agora, sobre o desconto, o exercício está bem claro para você diminuir o preco_unit a partir do valor recebido como parâmetro de aplicaDesconto.

	public void aplicaDesconto(int desconto){
		this.preco_unit = preco_unit - desconto;
	}

wiliamps

[quote=wiliamps]Caro Junior_SP,

a forma que você está capturando os valores não é correta.

A classe Fatura deve receber o valor de seu atributo via método set. Exemplo:

	public static void main(String args[]){

		Scanner input = new Scanner(System.in);	
		Fatura fat = new Fatura();

		System.out.println("Digite o número da fatura:");
		
		fat.setNumero_fatura(input.nextInt());

		...
	}

Agora, sobre o desconto, o exercício está bem claro para você diminuir o preco_unit a partir do valor recebido como parâmetro de aplicaDesconto.

	public void aplicaDesconto(int desconto){
		this.preco_unit = preco_unit - desconto;
	}

wiliamps

[/quote]

Wiliamps, boa noite.

Não consigo chamar o preco_unit2 que está no método somaFaturas para aplicar o desconto e apresentar o novo valor das Faturas.

Poderia me ajudar em mais esta?

Junior_SP, não vai conseguir mesmo, porque preco_unit2 é um parâmetro de somaFaturas veja lá. Ele só pode ser acessado no escopo do método somaFaturas.

Para você acessar o preco_unit2, teria que guardar em um local global enquanto existe a Fatura. Pode ser um atributo da Fatura.

Se resolver o problema, continue a tentar fazer uma classe da melhor maneira possível. É um ótimo começo seu esforço.

wiliamps