Um while loop que ta a repetir uma println 2 vezes e não é suposto

2 respostas
G

Olá a todos gostaria que alguem me esclarecesse por que é que a println que vou por a negrito está a repetir duas vezes na consola. Eu quero que esta mesma println apareça sempre que a açcão anterior esteja concluida.

[/code]
import java.util.Scanner;

public class Mercearia {
int alfaces;
int couves;
int tomates;
static String escolha;
int quantia;

public static void main(String [] args){

int alfaces=100;
int couves=200;
int tomates=300;

Scanner input = new Scanner(System.in);
while(escolha!="exit"){
System.out.println("O que quer comprar? couves, tomates ou alfaces? Se quiser saber as quantias dos produtos disponiveis no stock escreva: Stock.");
String escolha = input.nextLine();


if(escolha.equalsIgnoreCase("tomates")) {
System.out.println("Quantos quer comprar?");
int quantia = input.nextInt();
tomates = tomates - quantia;
System.out.println("Você comprou " + quantia + " tomates. Restam " + tomates + " tomates no stock." );
}

else if(escolha.equalsIgnoreCase("couves")) {
System.out.println("Quantas quer comprar?");
int quantia = input.nextInt();
couves = couves - quantia;
System.out.println("Você comprou " + quantia + " couves. Restam " + couves + " couves no stock." );
}

else if(escolha.equalsIgnoreCase("alfaces")) {
System.out.println("Quantas quer comprar?");
int quantia = input.nextInt();
alfaces = alfaces - quantia;
System.out.println("Você comprou " + quantia + " alfaces. Restam " + alfaces + " alfaces no stock." );
}
else if(escolha.equalsIgnoreCase("Stock")) {
System.out.println("Estão disponiveis " + tomates + " tomates," + alfaces + " alfaces, " + couves + " couves." );

}
}
}}

[code]

2 Respostas

B

gaspar247:
Olá a todos gostaria que alguem me esclarecesse por que é que a println que vou por a negrito está a repetir duas vezes na consola. Eu quero que esta mesma println apareça sempre que a açcão anterior esteja concluida.

import java.util.Scanner;

public class Mercearia {
	int alfaces;
	int couves;
	int tomates;
	static String escolha;
	int quantia;
	

	public static void main(String [] args){
		
		int alfaces=100;
		int couves=200;
		int tomates=300;
		
		Scanner input = new Scanner(System.in);
		while(escolha!="exit"){
			[b]System.out.println("O que quer comprar? couves, tomates ou alfaces? Se quiser saber as quantias dos produtos disponiveis no stock escreva: Stock.");[/b]
		String escolha = input.nextLine();
		
		
		if(escolha.equalsIgnoreCase("tomates")) {
			System.out.println("Quantos quer comprar?");
			int quantia = input.nextInt();
		tomates = tomates - quantia;
		    System.out.println("Você comprou " + quantia + " tomates. Restam " + tomates + " tomates no stock." );
		}

		else if(escolha.equalsIgnoreCase("couves")) {
			System.out.println("Quantas quer comprar?");
			int quantia = input.nextInt();
		couves = couves - quantia;
		    System.out.println("Você comprou " + quantia + " couves. Restam " + couves + " couves no stock." );
		}
		
		else if(escolha.equalsIgnoreCase("alfaces")) {
			System.out.println("Quantas quer comprar?");
			int quantia = input.nextInt();
		alfaces = alfaces - quantia;
		    System.out.println("Você comprou " + quantia + " alfaces. Restam " + alfaces + " alfaces no stock." );
		}
		else if(escolha.equalsIgnoreCase("Stock")) {
			System.out.println("Estão disponiveis " + tomates + " tomates," + alfaces + " alfaces, " + couves + " couves." );
			
}
}
}}

import java.util.Scanner;
public class Mercearia {
	static boolean controle = true;
	static int alfaces = 100;
	static int couves = 200;
	static int tomates = 300;
	static int quantia = 0;
	static String escolha;
	static Scanner input = new Scanner(System.in);
	public static void main(String[] args) {
		while ( controle ) {
			System.out.println("O que quer comprar? couves, tomates ou alfaces?" +
				" Se quiser saber as quantias dos produtos disponiveis no stock escreva: Stock.");
			// só usei o next ao invés do nextLine e não fez 2x a pergunta já que as 
            // Strings desse código não necessitam de espaços
			escolha = input.next();
			if ( escolha.equalsIgnoreCase( "exit" ) ){
				System.out.println( "Compra Finalizada! Volte Sempre!" );
				controle = false;
			} else {
				escolheu( escolha );
			}
		}
	}
	public static void escolheu( String escolha ) {
		if (escolha.equalsIgnoreCase("tomates")) {
			System.out.println("Quantos quer comprar?");
		    quantia = input.nextInt();
			tomates = tomates - quantia;
			System.out.println("Você comprou " + quantia
					+ " tomates. Restam " + tomates + " tomates no stock.");
		}
		else if (escolha.equalsIgnoreCase("couves")) {
			System.out.println("Quantas quer comprar?");
			quantia = input.nextInt();
			couves = couves - quantia;
			System.out.println("Você comprou " + quantia
					+ " couves. Restam " + couves + " couves no stock.");
		}
		else if (escolha.equalsIgnoreCase("alfaces")) {
			System.out.println("Quantas quer comprar?");
			quantia = input.nextInt();
			alfaces = alfaces - quantia;
			System.out.println("Você comprou " + quantia
					+ " alfaces. Restam " + alfaces + " alfaces no stock.");
		} else if (escolha.equalsIgnoreCase("Stock")) {
			System.out.println("Estão disponiveis " + tomates + " tomates,"
					+ alfaces + " alfaces, " + couves + " couves.");
		}
	}
	// camarada só falta você criar um método para controlar a quantidade de produtos,
	// pois nesse seu código se eu quiser comprar mais do que Stock é possível, aviso,
    // atenção ao postar seu código entre os blocos 'code e /code' para não ficar essa
    // bagunça aí, que por este motivo, talvez a galera nem vai olhar para ajudar
	
	// E NÃO DESISTA NUNCA, POIS, O GUJ ESTÁ AÍ PARA AJUDAR!
}
G

Muito obrigado pela resposta, começo a sofrer porque sei que faço sempre os códigos mais extensos do que realmente precisam ser. Mas consegui com a sua resposta aprender mais alguma coisinha, acerca do que introduzir no main method, e dps chamar os “secundarios”. Mas isto desmotiva tanto, mas vou tentar não desistir! :lol:

Criado 10 de março de 2013
Ultima resposta 10 de mar. de 2013
Respostas 2
Participantes 2