2013-06-30 4 views
1

Просто изучать исключение. Это приводит к тому, что «высота не может быть разрешена переменной». Наверное, мне не хватает чего-то важного.Переменная, объявленная внутри блока try, не может быть разрешена.

import java.util.*; 

public class Step4_lab01 
{ 
    public static void main(String[] args) 
    { 
     Scanner userIn = new Scanner(System.in); 

     System.out.print("Input height: "); 
     try { 
      int height = userIn.nextInt(); 
     } 
     catch(InputMismatchException e) 
     { 
      System.out.println("ERORRORrr"); 
     } 
     System.out.print("Input width: "); 
     int width = userIn.nextInt(); 

     Rectangle rektangel1 = new Rectangle(height,width); 
     rektangel1.computeArea(); 
    } 
} 

ответ

1

Я думаю, вам лучше изменить свой код:

int height = 0; 
int width = 0; 
Scanner scanner = new Scanner(System.in); 

while(true){ 
try{ 
    height = scanner.nextInt(); 
    break; 
    }catch(InputMismatchException ex){ 
    System.out.println("Height must be in numeric, try again!"); 
    scanner.next(); 
    /* 
    * nextInt() read an integer then goes to next line,what if the input was not 
    * numeric, then it goes to catch, after catch it goes back to try, then reads 
    * an empty line which is also not numeric, that caused the infinity loop. 
    * next() will read this empty line first, then nextInt() reads the integer value. 
    * The problem have been solved. 
    /* 
    } 
} 

ли это также по ширине, то, что вы не ожидаете от вашего кода является высота внутри блока попробовать, вы должны отметить, что это vailed только внутри попробуйте блок. Всякий раз, когда вы выходите на улицу, у вас нет доступа к ней.
Другое дело, никогда не забывайте сообщение внутри блока catch, настоятельно рекомендуется иметь содержательное сообщение, если нет, то printStackTrace() будет замечательным.

+0

Хорошая идея! Однако код не работает для меня. Я попадаю в бесконечную «Высота должна быть в числовой, попробуйте еще раз!» петля. –

+0

@BenjaminLindqvist: Да, моя ошибка увидела отредактированный ответ. – Azad

1

Объявите переменную 'height' вне блока try, чтобы быть видимым вне блока.

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