Opa gente, gostaria de uma dica para melhorar meu programinha[resolvido]

5 respostas
N

entao, eu tenho esse metodo aqui :

public void registrar(int produto, int vendedor, int valor) {
		
		if ((produto == 1) && (vendedor == 1))
			++sales[0][0];
		else if ((produto == 1) && (vendedor == 2))
			++sales[0][1];
		else if ((produto == 1) && (vendedor == 3))
			++sales[0][2];
		else if ((produto == 1) && (vendedor == 4))
			++sales[0][3];
		else if ((produto == 2) && (vendedor == 1))
			++sales[1][0];
		else if ((produto == 2) && (vendedor == 2))
			++sales[1][1];
		else if ((produto == 2) && (vendedor == 3))
			++sales[1][2];
		else if ((produto == 2) && (vendedor == 4))
			++sales[1][3];
		else if ((produto == 3) && (vendedor == 1))
			++sales[2][0];
		else if ((produto == 3) && (vendedor == 2))
			++sales[2][1];
		else if ((produto == 3) && (vendedor == 3))
			++sales[2][2];
		else if ((produto == 3) && (vendedor == 4))
			++sales[2][3];
		else if ((produto == 4) && (vendedor == 1))
			++sales[3][0];
		else if ((produto == 4) && (vendedor == 2))
			++sales[3][1];
		else if ((produto == 4) && (vendedor == 3))
			++sales[3][2];
		else if ((produto == 4) && (vendedor == 4))
			++sales[3][3];
		else if ((produto == 5) && (vendedor == 1))
			++sales[4][0];
		else if ((produto == 5) && (vendedor == 2))
			++sales[4][1];
		else if ((produto == 5) && (vendedor == 3))
			++sales[4][2];
		else if ((produto == 5) && (vendedor == 4))
			++sales[4][3];
		
		Vendedores.setTotal(getTotal() + valor);
	}

Gostaria de um jeito de torna-lo um pouco mais "elegante" sabe, pra nao ter esses 20 if/else ai, alguem poderia dar uma ideia?

5 Respostas

J
public void registrar(int produto, int vendedor, int valor) {
  if ((produto > 0) && (produto < sales.lenght) && 
      (vendedor > 0) && (vendedor < sales[produto - 1].lenght)) sales[produto - 1][vendedor - 1]++;
  Vendedores.setTotal(getTotal() + valor);
}

Acho que acabei de fazer seu dever de casa… mas o ócio…

Uma outra idéia, para ficar mais legível, é usar uma classe de Assert importada estaticamente que tenha um método isBetweenInclusive, como:

public void registrar(int produto, int vendedor, int valor) {
  if (isBetweenInclusive(produto, 1, sales.lenght) &&
      isBetweenInclusive(vendedor, 1, sales[produto - 1].lenght)) sales[produto - 1][vendedor - 1]++;
  Vendedores.setTotal(getTotal() + valor);
}
N

boa, brigado

não é dever de casa, to fazendo por conta mesmo

obrigado denovo

marciobarroso

Boa Victor …

Eu ía sugerir a mesma solução …

[]'s

J

Victor Maehira:
Boa tarde!
Será que resolve?

public void registrar(int produto, int vendedor, int valor) { ++sales[produto - 1][vendedor - 1]; Vendedores.setTotal(getTotal() + valor); }

Você deveria verificar os limites antes, como ela fazia e como eu fiz. O exemplo acima tem um ArrayOutOfIndexException em potencial.

Victor_Yuji_Maehira

Boa tarde!
Será que resolve?

public void registrar(int produto, int vendedor, int valor) { ++sales[produto - 1][vendedor - 1]; Vendedores.setTotal(getTotal() + valor); }

Criado 26 de janeiro de 2007
Ultima resposta 26 de jan. de 2007
Respostas 5
Participantes 4