Laço com Vetor não funciona corretamente

3 respostas
V

Preciso melhorar este código, o laço não está funcionando corretamente, deveria imprimir somente uma vez ao acessar o vetor, porém imprime ao acessar todas as posições do vetor, alguém tem alguma dica???
Valeu!!

public class BadFood3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			cheekFood("picadinho");
		} catch (BadFoodException e) {
			e.imprimir();
		}

	}

	public static void cheekFood(String food) throws BadFoodException {

		String[] badFood = { "bife", "lasanha", "picadinho" };

		for (String badFoodName : badFood) {

			if (food.equalsIgnoreCase(badFoodName)) {
				throw new BadFoodException();
			} else {
				System.out.println("Boa comida");
			}

		}
	}
}
class BadFoodException extends Exception {
	
	public void imprimir(){
		System.out.println("Comida ruim");
	}
}

3 Respostas

marcelo.silva

Você pode usar um ArrayList de String e usar o método badFoods.contains(food)

if(badFoods.contains(food)) {

…

}
V

thejokerbm:
Ola bom dia.

Nao sei se entendi bem mas, se vc quer q esse metodo diga se a comida eh boa ou ruim ele nao deveria ter else ficaria algo desse tipo

public static void cheekFood(String food) throws BadFoodException {  
   
         String[] badFood = { "bife", "lasanha", "picadinho" };  
   
         for (String badFoodName : badFood) {  
   
             if (food.equalsIgnoreCase(badFoodName)) {  
                 throw new BadFoodException();  
             } 
         }  
             System.out.println("Boa comida");  
     }

deve ficar fora da estura da repetição, entendeu? caso nao tenha entendido o pq, eu te explico.

Perfeito…nao havia atentado ao detalhe de que quando a exception é lancada o resto do codigo nao é mais lido, por isso nao havia colocado o System.out.println(“Boa comida”); fora da estrutra do laco, valeu marcelo

T

Ola bom dia.

Nao sei se entendi bem mas, se vc quer q esse metodo diga se a comida eh boa ou ruim ele nao deveria ter else ficaria algo desse tipo

public static void cheekFood(String food) throws BadFoodException {  
   
         String[] badFood = { "bife", "lasanha", "picadinho" };  
   
         for (String badFoodName : badFood) {  
   
             if (food.equalsIgnoreCase(badFoodName)) {  
                 throw new BadFoodException();  
             } 
         }  
             System.out.println("Boa comida");  
     }

deve ficar fora da estura da repetição, entendeu? caso nao tenha entendido o pq, eu te explico.

Criado 29 de agosto de 2011
Ultima resposta 29 de ago. de 2011
Respostas 3
Participantes 3