Por que não consigo colocar um nome composto numa String?

O meu código fonte é o seguinte:

package exercicio069;
import java.util.Scanner;
public class Exercicio069 {
    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        String nome = "", melhor = "";
        float n1 = 0f, n2 = 0f, media = 0f;
        byte aprovado = 0, reprovado = 0;
        float maiorMedia = 0f;
        for (byte c = 1; c <= 5; c++) {
            System.out.print("Qual é o seu nome? ");
            nome = teclado.next();
        } //TEM MAIS COISAS, EU ADAPTEI
 
Então, quando eu coloco um nome composto, exemplo: João Manoel, Vinicius Gabriel, aparece o seguinte erro: 

Exception in thread “main” java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextFloat(Scanner.java:2345)
at exercicio069.Exercicio069.main(Exercicio069.java:14)
C:\Users\Pessoal\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 23 segundos)

Observe: quando eu coloco um nome simples: Rafael, João, Vinicius, o programa funciona CORRETAMENTE!

O “next” retorna o próximo token lido
Utilize “nextLine” para ler a linha toda

1 curtida

obrigado!