2015-05-09 4 views
-1

У меня есть массив определенного размера и должен попросить пользователя ввести индекс и напечатать это проиндексированное значение. Однако, если они вводят что-то, что не является int, мне нужно использовать InputMismatchException, чтобы проверить, были ли они введены 'q' или 'Q' для завершения моей программы. Мой вопрос: как мне это сделать. У меня есть catch (InputMismatchException ex), и я пробовал if(ex == 'q'...), но мне не разрешено это делать. Каким образом я могу проверить объект?Как использовать объект InputMismatchException

EDIT: Это код, который я до сих пор

import java.util.InputMismatchException; 
import java.util.Scanner; 

public class ExceptionsWithUserInput { 
public static void main(String[] args) { 
    final int SIZE_OF_ARRAY = 100; 
    final int MAX_OF_ARRAY = 10; 
    final int MIN_OF_ARRAY = -10; 
    float [] randomFloats = new float [SIZE_OF_ARRAY]; 
    for (int i = 0; i < SIZE_OF_ARRAY; i++){ 
     randomFloats [i] = (float) ((Math.random() * 10) - 10); 
    } 
    Scanner input = new Scanner (System.in); 
    System.out.println("Generating 100 random numbers in [-10.0,10.0) ..."); 
    boolean continueInput; 
    do { 
     try { 
      System.out.print ("Please enter an index: "); 
      int index = input.nextInt(); 
      System.out.println(
        "The random number for index = " + index + " is " 
        + randomFloats[index]); 
      continueInput = true; 
     } 
     catch (IndexOutOfBoundsException ex){ 
      System.out.println("ERROR: user-supplied index is out of bounds!"); 
      continueInput = true; 
     } 
     catch (InputMismatchException ex){ 
      if (ex == 'q') 
      } 
     } 
    } 

Как я уже говорил, я не знаю, как использовать то, что пользователь вводит

+0

пожалуйста поделитесь код – Dude

+0

I» я добавил код, который у меня есть. Я еще не закончил цикл do while, так как я застрял в этой части. –

+2

Если nextInt() не является целым числом, тогда вызовите next(), чтобы иметь следующий токен в виде строки, и проверьте, соответствует ли эта строка " q ". Исключение - это не символ. Сравнение их не имеет смысла. Обратите внимание, что полагаться на исключение для этого плохой дизайн. Вы должны использовать hasNextInt(), чтобы проверить, является ли следующий токен int. –

ответ

-1
if (ex == 'q') is not true, you should check input and write 
if (input == 'q') 
+0

Я тоже пробовал, но я получаю сообщение об ошибке, говорящее, что сканер и символ несовместимы –

+0

попробуйте этот String.valueOf (input.nextLine(). CharAt (0)) == 'q' – fasadat

Смежные вопросы