[RESOLVIDO] Problema com repetição no JAVA


O programa tem como objetivo coletar o nome e idade de 10 pessoas e salvar as informações em suas respectivas arrays. Quando a repetição é executada a primeira vez, a informação para guardar o nome da pessoa( name[i-1] = leitor.nextline(); ) é ignorada, conforme a imagem, e o programa continua todas as repetições dessa forma. Não consegui encontrar o erro, se puderem me ajudar, fico grato.

Código:

import java.util.Arrays;
import java.util.Scanner;
public class MaxMin {
	public static void main(String[] args) {
		Scanner leitor = new Scanner(System.in);
		int[] A = new int[10];
		int[] B = new int[10];
		String[] name = new String[10];
		for (int i = 1; i<=10;i++) {
		System.out.println("Digite o nome da pessoa "+i+".");
		name[i-1] = leitor.nextLine();
		System.out.println("Digite a idade da pessoa "+i+".");
		A[i-1] = leitor.nextInt();
		B[i-1] = A[i-1];
		}
		Arrays.sort(B);
		System.out.println("Maior valor "+B[9]);
		System.out.println("Menor valor "+B[0]);
		float X = 0.f;
		for (int Z = 0; Z<10; Z++) {
			X += B[Z];
		}
		System.out.println("Valor médio "+(X/10));
	}
}

Quando você utilizar um objeto Scanner para ler entrada de dados pelo teclado você só deve utilizar o método nextLine().
Troque as chamadas de qualquer método
objetoScanner.nextTipoDeDado()
por TipoDeDado.parseTipoDeDado(objetoScanner.nextLine())

2 curtidas

Complementando a dica do colega:
A[i-1] = Integer.parseInt( leitor.nextLine() );

1 curtida

Dá para ‘salvar’ o código…

import java.util.Arrays;
import java.util.Scanner;

public class MaxMin {
	public static void main(String[] args) {
		Scanner leitor = new Scanner(System.in);
		int[] a = new int[10]; //variável deve, por convenção, ser escrito com letras minúsculas
		int[] b = new int[10]; //variável deve, por convenção, ser escrito com letras minúsculas
		String[] name = new String[10];
		
		System.out.println("Informe os dados da pessoa.\n");
		for(int i = 1; i <= 10; i++){//Use identação para melhorar a legibilidade do código
			System.out.print(i + "ª pessoa\nNome:");
			name[i - 1] = leitor.nextLine();
			
			//Use espaços para melhorar a legibilidade - BP 2.2
			System.out.print("Idade: ");
			a[i - 1] = leitor.nextInt();
			
			b[i - 1] = a[i - 1];
			
			System.out.println("\n");
			//'Limpa' o scanner
			leitor.nextLine();
		}
		
		Arrays.sort(b);
		
		System.out.println("Maior valor " + b[9]);
		System.out.println("Menor valor " + b[0]);
		
		float x = 0;
		for (int z = 0; z < 10; z++) {
			x += b[z];
		}
		
		System.out.println("Valor médio " + (x / 10));
	}
}

Rodando…


image

1 curtida