2017-02-10 10 views
0

I've этого вопроса в этом случае программа тест:Switch - Исключение в потоке "главный" java.lang.ArrayIndexOutOfBoundsException: 0

package testecase; 

public class TesteCase { 
    public static void main(String args []) { 
     // TODO code application logic here 
     switch (args [0] .charAt (0)) { 
     case 'A':System.out.println("Vogal A "); 
     break; 

     case 'E':System.out.println("Vogal E "); 
     break; 

     default:System.out.println("Não é vogal "); 

     } 
    } 
} 

Как я могу решить эту проблему?

+0

Вы передаете аргументы при запуске кода? – Gatusko

+1

check args.lenght> 0 –

+0

просто передайте аргумент вашей программе. 'java TestCase Abc', например, для ввода в первом случае – davidxxx

ответ

1

Исключение говорит вам, что во время выполнения ваш args массив не имеет никаких записей.

Вы можете изменить, что с помощью вызова виртуальной машины Java, как

java TestCase A B C 

Других слов: этот массив имеет параметров, которые вы даете в JVM при запуске его. Никакие параметры в командной строке ... не попадают в пустой массив.

Или дает другой вид: код содержит два предположения о входящих данных:

  1. Использование args [0]требует, что массив имеет по крайней мере один запись
  2. Использование ....charAt(0)требует что эта первая запись как минимум одна знак

И угадайте, что: это не обязательно так!

Вы узнали свой первый, очень ценный урок о программировании: не ожидайте, что «реальность» во время выполнения соответствует вашим предположениям, как это должно быть.

Значение: при поступлении информации извне, первый шаг - Подтвердить, что соответствует вашим ожиданиям. Нравится:

if (args.length > 0) { 
... process input 
} else { 
tell user: no input 

Аналогично для этой обработки строк вы намерены делать!

+0

Спасибо, брат! помогает много = D –

+0

Добро пожаловать. Не стесняйтесь принимать в любое время :-) – GhostCat

0

Убедитесь, что вы отправляете аргумент в вашу программу при запуске ее: java TesteCase A

Кроме того, в общем, вы не должны доверять пользователя, поэтому я советую вам проверить длину в аргументах первой. Как только вы знаете, что он не пуст, вы можете попробовать его прочитать.