Como evitar StringIndexOutOfBoundsException quando char não tem valor?

Desculpe se o título não fazia sentido, mas eu não sabia como defini-lo.

O problema:

Estou fazendo um jogo de perguntas de múltipla escolha que obtém a, b, c ou d do usuário. Isso não é problema se eles fizerem o que é solicitado, no entanto, se não digitarem nada e apenas pressionar enter, recebo uma StringIndexOutOfBoundsException. Entendo por que isso está acontecendo, mas sou novo em Java e não consigo pensar em uma maneira de corrigi-lo.

O que tenho até agora:

    System.out.println("Enter the Answer.");

    response = input.nextLine().charAt(0);

    if(response == 'a')
    {
            System.out.println("Correct");
    }

    else if(response == 'b' || response == 'c' || response == 'd')
    {
        System.out.println("Wrong");
    }
    else
    {
        System.out.println("Invalid");
    }

É claro que o programa nunca ultrapassará a segunda linha de código se o usuário não digitar nada, porque você não pode aceitar o valor charAt (0) de uma String vazia. O que estou procurando é algo que verifique se a resposta é nula e, em caso afirmativo, volte e faça a pergunta ao usuário novamente.

Agradecemos antecipadamente por qualquer resposta.

Resposta 1

Você pode usar um loop do-while. Apenas substitua

response = input.nextLine().charAt(0);

com

String line;

do {
  line = input.nextLine();
} while (line.length() < 1);

response = line.charAt(0);

Isso continuará a ser chamado input.nextLine()quantas vezes o usuário inserir uma linha em branco, mas assim que entrar em uma linha que não esteja em branco, ele continuará e definiráresponse como o primeiro caractere da em branco. Se você desejar solicitar novamente a resposta ao usuário, poderá adicioná-lo ao interior do loop. Se você deseja verificar se o usuário digitou uma letra a-d, também pode adicionar essa lógica à condição do loop.

Resposta: 2

Simples:

  • Obtenha a entrada inicialmente como uma String e coloque-a em uma variável String temporária.
  • Em seguida, verifique o comprimento da string.
  • então, se> 0 extrair o primeiro caractere e usá-lo.
Resposta: 3

É possível no Eclipse Milo que um cliente se conecte a um servidor com estes parâmetros de autenticação: "certificado + chave privada"? E também com os parâmetros "Política de Segurança" e "Segurança da Mensagem ...

Eu configurei um cluster de 2 nós do Hadoop 2.3.0. Está funcionando bem e posso executar com êxito o exemplo distributedshell-2.2.0.jar. Mas quando tento executar qualquer trabalho de mapreduce, recebo erro. Eu configurei o MapRed ....

Diga, "execute myApp.jar com cpu = 800 e memória = 1024". Eu faço programação em java há muitos anos e é um constrangimento fazer essa pergunta. Eu nem sei se isso é possível ou não. E ...

Estou usando logs de chamadas do Android no meu aplicativo e gostaria de determinar se a última chamada foi de entrada ou de saída. Isto é o que eu tentei até agora, no entanto, o tipo int me dá um erro ...