Problemas com do-while! [RESOLVIDO]

9 respostas
manolo

Pessoal e o seguinte, tenho que fazer um classe bem simplesinha usando as tres estruturas de repetição for, while e do-while!

Eu consegui realizar com for, mais nao estou conseguindo raciocinar para fazer o mesmo com a estrutura do-while e while. :evil:

Alguem pode me dar uma luz ? Segue o codigo com o do-while abaixo.

import java.util.Scanner;
public class ExercicioCinco_While {

    public static void main(String args[]) {
    	
    	Scanner input = new Scanner(System.in);
    	int num[] = new int [11];
    	
    	int recebe;
    	int i = 1;
    	
    	System.out.println( " *** Informe 10 numeros inteiros: " );
    	
    	do{
    		recebe = input.nextInt();
    		num[i] = recebe;
    		i++;
    		
    	}while(i<num.length);
    	
    	System.out.println(" *** Os respectivos numeros são: ");
    	
    	do{
    		
    		
    		System.out.println(i+ " - " +num[i]);
    		i++;
    	}while(i<num.length);	
    	
    }
    
    
}

Já dei uma boa lida em artigos, mais parece que travo a cabeça, não sei o que fazer mais!

Acontece o seguinte erro:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11

Abraço.

9 Respostas

higornucci

Olá, amigo!

Acontece o seguinte, no do-while você esta tentando inserir uma vez a mais no vetor, dai o erro:

"main" java.lang.ArrayIndexOutOfBoundsException: 11

Então mude sua condição.

while(i<num.length - 1);

Isso deve resolver, porem tente achar uma solução mais elegante.

Uma boa prática é fazer o teste de mesa (http://www.brasilacademico.com/ed/testemesa.htm) antes de executar um algoritmo.

rodpuc

na linha 10, substitua

int i = 1;

por

int i = 0;
manolo

Higormucci, já tentei resolver desse jeito e continua com o mesmo problema!

Tentei de tudo e não consigo ver uma soluçao!

Abraço.

manolo

Rodpuc, não deu certo tbm cara!

juliofsn

Você incrementou várias vezes a variável “i” e antes de entrar no segundo do…while você precisa zerar seu valor de novo ou ele vai pegar o atual valor de “i” que será 11, uma posição que não existe no vetor “num”, então ocorre esse erro. E lembre sempre que a posição de vetores em Java começa em zero, não em um.

rodpuc
Substitua
do{  
               
               
             System.out.println(i+ " - " +num[i]);  
             i++;  
         }while(i<num.length);
por
int j = 0;
do{  
               
               
             System.out.println(j+ " - " +num[j]);  
             j++;  
         }while(j<num.length);

Além da outra alteração q eu já tinha te passado. Vc tinha esses 2 erros no seu código.

Felipe_Gomes

Acho que seja esse o problema…

Felipe_Gomes
rodpuc:
Substitua
do{  
               
               
             System.out.println(i+ " - " +num[i]);  
             i++;  
         }while(i<num.length);
por
int j = 0;
do{  
               
               
             System.out.println(j+ " - " +num[j]);  
             j++;  
         }while(j<num.length);

Além da outra alteração q eu já tinha te passado. Vc tinha esses 2 erros no seu código.


Funcionou!

manolo

[b]Nossa pessoal, que falta de atenção a minha realmente e verdade esqueci do contador!

Chega da vergonha! :oops:

ahhauauhauahuhauhahaahua

Muito obrigado pela a ajuda de todos, e desculpa a falta de atenção

Abraços.
[/b]

Criado 8 de março de 2010
Ultima resposta 8 de mar. de 2010
Respostas 9
Participantes 5