Sair do looping for quando digitar o número 1

1 resposta
loopprogramaçãojava
Ian_Fonteles

Boa tarde galera,sou iniciante em Java e gostaria de acertar uma questão no meu código
No caso meu código funciona como um menu pra saque bancário,onde a opção 1 o usuário insere as notas que serão usadas para saque e deve encerrar quando a nota 1 for digitada,na opção 2 o saque que só pode usar as notas inseridas e na opção 0 o programa é encerrado .

No caso fiz todo o código,mas n consigo parar de inserir nesse array as notas depois da nota 1 entrar ,ele continua mandando digitar as notas.

package exercicios;

import java.util.Scanner;

public class Saque{

public static void main(String[] args) {
	// TODO Auto-generated method stub
	String menu = "* MENU OPÇÕES * " + "\n" + "1 - Notas Existentes" + "\n" + "2 - Saque" + "\n" + "0 - Sair" + "\n";
	int [] possiveis = new int [7];
	int work = 1;
	int div1=0,div2=0,div3 = 0,div4 = 0,div5 = 0,div6 = 0,div7 = 0;
	int resto1=0,resto2=0,resto3 = 0,resto4 = 0,resto5 = 0,resto6 = 0,resto7 = 0;
	while (work!=0) {
		System.out.println(menu);
		Scanner entrada = new Scanner (System.in);
		System.out.println("Digite a opçao desejada: ");
		int opcao = entrada.nextInt();
		if (opcao==1) {
			for (int i=0;i<possiveis.length;i++) {
				System.out.println("Digite as notas disponiveis");
				possiveis[i] = entrada.nextInt();
			}
			for (int i =0; i<possiveis.length;i++) {
				if(possiveis[i]!=1) {
					System.out.println(possiveis[i]);
				}else if (possiveis[i]==1 ){
					System.out.println(possiveis[i]);
				}
				work=1;
			}
		}else if (opcao==2) {
			System.out.println("Digite o valor do saque");
			int saque = entrada.nextInt();
			if ((possiveis[0]>0)|| (possiveis[1] >0) || (possiveis[2] >0) || (possiveis[3] >0) ||(possiveis[4]>0) || (possiveis[5]>0) || (possiveis[6]>0)){
			div1 = saque / possiveis[0];
			resto1 = saque % possiveis[0];
			if (resto1>0){
			
			div2 = resto1 / possiveis[1];
			resto2 = resto1 % possiveis[1];}
			if (resto2>0){
			div3 = resto2 / possiveis[2];
			resto3 = resto2 % possiveis[2];}
			if (resto3>0){
			div4 = resto3 / possiveis[3];
			resto4 = resto3 % possiveis[3];}
			if (resto4>0){
			div5 = resto4 / possiveis[4];
			resto5 = resto4 % possiveis[4];}
			if ( resto5>0){
			div6 = resto5 / possiveis [5];
			resto6 = resto5 % possiveis [5];}
			if (resto6>0){
			div7 = resto6 / possiveis [6];
			resto7 = resto6 % possiveis [6];}
			}
			
			if (div1!=0) {
				System.out.println("Total de notas de  " + possiveis[0] + " = " + div1);

			}
			if (div2!=0) {
				System.out.println("Total de notas de  " + possiveis[1] + " = " + div2);

			}
			if (div3!=0) {
				System.out.println("Total de notas de  " + possiveis[2] + " = " + div3);
			}
			if (div4!=0) {
				System.out.println("Total de notas de  " + possiveis[3] + " = " + div4);
			}
			if (div5!=0) {
				System.out.println("Total de notas de  " + possiveis[4] + " = " + div5);
			}
			if (div6!=0) {
				System.out.println("Total denotas de  " + possiveis[5] + " = " + div6);
			}
			if (div7!=0) {
				System.out.println("Total de notas de  " + possiveis[6] + " = " + div7);
			}
			work=1;
		}else if (opcao==0) {
			work=0;
		}else {
			System.out.println("Opcão invalida");
		}
	
	}
}

}

1 Resposta

I

Você pode usar uma flag de parada:

int flag = possiveis.length;

for (int i = 0; i < flag;i++){
	if(possiveis[i]!=1){
		System.out.println(possiveis[i]);
		
	}else if (possiveis[i]==1 ){
		System.out.println(possiveis[i]);
		flag = 0;
	}
	work=1;
}

Ou um break:

for (int i = 0; i < possiveis.length;i++){
	if(possiveis[i]!=1){
		System.out.println(possiveis[i]);
		
	}else if (possiveis[i]==1 ){
		System.out.println(possiveis[i]);
		break;
	}
	work=1;
}

Alguns dizem (não me recordo onde li sobre isso) que desvios não condicionais como break, continue e principalmente goto devem ser evitados a todo custo, principalmente em OO.

Criado 9 de outubro de 2019
Ultima resposta 9 de out. de 2019
Respostas 1
Participantes 2