[resolvido] Problemas com indice de Array!

4 respostas
manolo

Boa tarde pessoal!

Eu estou resolvendo neste momento uma lista de exercícios para estudo. E estou com um probleminha chato, que creio eu seja relacionado a classe Scanner. Segue abaixo o código:
import java.util.Scanner;
public class ExercicioVetUm {

    public static void main(String args[]) {
    	
    	String n[] = new String [10];
    	int informado = 0;
    	Scanner input = new Scanner(System.in);
    	
    	
    	System.out.println( "  - Informe 10 nomes: ");
    	
    	for (int i = 0; i < n.length; i++){
    		n[i] = input.nextLine();
    	}
    	
    	do{
    	
    	System.out.println( " - informe um indice para busca do nome: ");
        informado = input.nextInt();
    		 
    		
    	if (informado != -1){
    		System.out.println(" - O numero procurado é: " + n[informado]);
    		}
    	
    	
    	System.out.println(" - Para sair digite -1 - ");
    	informado = input.nextInt();
    				    	
    	}while(informado != -1);
    }
    
    
}

O problema se da quando tento digitar a sexta posição do array, aparece a seguinte mensagem:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at ExercicioVetUm.main(ExercicioVetUm.java:28)

Já tentei resolver, mas sem sucesso algum. Será que alguem pode me da uma ajuda?

Obrigado.

4 Respostas

T

Esse erro acontece quando você pede um inteiro, no seu caso usando o ‘input.nextInt()’, e no console digita um valor que não é inteiro, causando incompatibilidade de tipos. Você teria que tratar isso para ter certeza que o usuário digitou mesmo um valor inteiro.

peczenyj

não deu problema algum aqui

- Informe 10 nomes: 
1
2
3
4
5
6
7
8
9
0
 - informe um indice para busca do nome: 
1
 - O numero procurado é: 2
 - Para sair digite -1 - 
0
 - informe um indice para busca do nome: 
6
 - O numero procurado é: 7
 - Para sair digite -1 - 
0
 - informe um indice para busca do nome: 
11
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11
	at ExercicioVetUm.main(ExercicioVetUm.java:24)
M
Aqui funcionou, mas alterei um pouco:
import java.util.Scanner;

public class ExercicioVetUm {

	public static void main(String args[]) {

		String n[] = new String[10];
		int informado = 0;
		Scanner input = new Scanner(System.in);

		System.out.println("  - Informe 10 nomes: ");

		for (int i = 0; i < n.length; i++) {
			n[i] = input.nextLine();
		}

		do {

			System.out.println(" - informe um indice para busca do nome: ");
			System.out.println(" - Para sair digite -1 - ");
			informado = input.nextInt();

			if (informado != -1) {
				System.out.println(" - O numero procurado é: " + n[informado]);
			}

		} while (informado != -1);
	}
}
Boa sorte!
manolo

[b]Estranho pessoal, eu estava usando o “JCreator” e ocorria este problema, foi so passar o código para o Eclipse que não ocorreu mais problema. Vai lá sabe o que ta rolando
auhauhahuahahhauhahauhaahuauuahauh

Se alguém souber vamos discutir sobre o assunto.

Abraços. :slight_smile: [/b]

Criado 5 de abril de 2010
Ultima resposta 5 de abr. de 2010
Respostas 4
Participantes 4