Ir para o conteúdo
AngusYoung

Ajuda com break ou algo do género

Mensagens Recomendadas

AngusYoung    5
AngusYoung

Aqui está o código:

while(casas[i] == 0){
		if(i == (NumeroDeBits - 1)){
			AQUI A INSTRUÇÃO;
		}else

		casas[i] = teclado.nextInt();
        i++ ;  
	}

	System.out.println(casas);

  Onde diz "AQUI A INSTRUÇÃO" queria pôr algo que passasse o ciclo while à frente e executasse o que vem a seguir, neste caso o println.

  Já tentei o break e o continue, mas o break pára o programa e o continue faz com que continue a ser executado o ciclo, a seguir ao else.

Obrigado desde já,

    Angus

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nbento.neves    0
nbento.neves

Podes usar uma flag para fazer isso.

Do género:

                
    boolean teste = false;
                do{
                while(casas[i] == 0){
                        if(i == (NumeroDeBits - 1)){
                                [b]AQUI A INSTRUÇÃO[/b];
                                flag = true;
                        }else{ 
                                casas[i] = teclado.nextInt();
                                i++ ;  
                 }
               
                  System.out.println(casas);
                  }while(flag == false);

Assim deve funcionar, mas acho que não será uma boa solução, também não consigo dizer mais porque não entendi muito bem qual a finalidade.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AngusYoung    5
AngusYoung

É um conversor binário -> decimal:

public static void main(String args[]){

	Scanner teclado = new Scanner(System.in);
	System.out.println("Insere o nr de bits");
	int NumeroDeBits = teclado.nextInt();
	NumeroDeBits += 1;

	int[] casas;                      //cria
	casas = new int[NumeroDeBits];    // array

	int i = 0; //contador

	System.out.println("Insere os bits");
	while(casas[i] == 0){
		if(i == (NumeroDeBits - 1)){
			;
		}else

		casas[i] = teclado.nextInt();
        i++ ;  
	}

	System.out.println(casas);

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Noco    1
Noco

boolean flag = false;
while(casas[i] == 0 && flag == false){
                        if(i == (NumeroDeBits - 1)){
                                flag = true; //AQUI A INSTRUÇÃO
                        }else
                       
                        casas[i] = teclado.nextInt();
                i++ ;  
                }
               
                System.out.println(casas);

Acho que é isto que tu pretendes, fazes as duas verificações ao mesmo tempo assim  o ciclo não executa depois de fazer essa instrução.

Espero ter ajudado.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1134
HappyHippyHippo

mas o break pára o programa

:eek: acho que o teu problema não está propriamente no saltar fora do ciclo while ...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AngusYoung    5
AngusYoung

Já coloquei a flag, mas agora o meu problema é o java.lang.ArrayIndexOutOfBoundsException . Estou a tentar perceber o que está mal, mas se alguém conseguir perceber primeiro, poste aqui p.f!

:eek: acho que o teu problema não está propriamente no saltar fora do ciclo while ...

    Haha eu sei que o break não tem nada a ver com o que eu quero, mas quando não se sabe uma coisa tenta-se tudo! Além disso, aproveitei para testar esse tipo de instrução.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1134
HappyHippyHippo

Onde diz "AQUI A INSTRUÇÃO" queria pôr algo que passasse o ciclo while à frente e executasse o que vem a seguir, neste caso o println.

Haha eu sei que o break não tem nada a ver com o que eu quero, mas quando não se sabe uma coisa tenta-se tudo! Além disso, aproveitei para testar esse tipo de instrução.

é melhor explicares melhor o problema .. afinal qual é o problema ???

onde dá erro e qual ???

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AngusYoung    5
AngusYoung

No programa, ao fim de inserir os bits ( ao inserir o último) dá o erro java.lang.ArrayIndexOutOfBoundsException. Queria saber como evitar esse erro! Estou a tentar perceber, mas como é das primeiras vezes que trabalho com arrays, "tá dificiu" !

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1134
HappyHippyHippo

isso tem cara de algo muito simples :

estas a ler mais elementos que o array casas pode guardar ...

isso porque a instrução para terminar o ciclo while não tem sentido ...

  int casas[] = new int[NumeroDeBits];    // cria array
  int i = 0; //contador
  boolean end_flag = false;

  System.out.println("Insere os bits");
  while(i < NumeroDeBits && !end_flag){
    casas[i] = teclado.nextInt();
    if (casas[i] == '0')
      end_flag = true;
    i++;
  }

claro que este tipo de código pode dar muitos problemas tipo ... se eu meter 'g' ?? não é propriamente um bit :D

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AngusYoung    5
AngusYoung

A end_flag é algum tipo de instrução que própria do java ou é uma técnica qualquer e pode ter qualquer nome? É que esta segunda opção pareceu-me confusa.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1134
HappyHippyHippo

é uma variavel ... é uma tecnica para para o ciclo a meio do esperado (matemática booleana).

mas se não quiseres parar o ciclo a meio, basta retirar isso ..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade