2013-10-24 4 views
0

Вы можете мне помочь? У меня есть этот код, который является частью моей программы:Как добавить ввод в этот массив строк?

Scanner a5 = new Scanner(System.in); 
      while(a5.hasNextLine()) //store every line in mail message until user type "." on a seperate line 
      { 
       String text = a5.nextLine(); 
       if (text.charAt(0) != '.') 
        {txt.add(text);} 
       else if(text.charAt(0) == '.' ) 
       {break;} 
      } 

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

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind 
ex out of range: 0 
     at java.lang.String.charAt(Unknown Source) 
     at MyPMC.main(MyPMC.java:51) 

как я могу это исправить, так что добавить пустую строку в моей строке? пример: , когда я печатаю это в сообщении работать нормально:

Hi 
my name is jack 
. 

, но когда я нажимаю ввести после второго предложения я получаю ошибки и мой крах программы, я не могу ввести так:

Hi 
My name is jack 

this is message 

. 

спасибо

ответ

2

Когда вы вводите только ввод, сканер возвращает пустую строку. Когда вы пытаетесь получить пустой символ String с text.charAt(0), вы выходите из диапазона и вызывается исключение StringIndexOutOfBoundsException.

Быстрое исправление было бы проверить длину строки перед использованием Шара следующим образом:

if (text.length() > 0 && text.charAt(0) != '.') 
+0

Я до сих пор получаю сообщение об ошибке, когда я нажимаю enter, я могу напечатать вот так: – raymond

+0

Привет, мое имя - это джек, затем пустая строка, тогда это конец. – raymond

+0

Вы получаете доступ к charAt (0) в двух разных местах, вы исправили их оба? – kviiri

0

Добавить простую проверку длины и продолжить работу, если 0

1

Проблема заключается в том, что для пустой строки, нет 0-го символа, поэтому text.charAt(0) не удается.

Вместо этого вы можете использовать text.startsWith(".") для проверки первого символа (или первых нескольких символов) и text.isEmpty() для проверки пустого ввода, то есть когда пользователь нажимает кнопку ввода, не набирая текст в первую очередь.

Кроме того, поскольку ваше второе условие if является именно отрицанием первого, вы можете просто использовать else здесь.

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