2016-06-17 2 views
0

Я пытался выяснить, как игнорировать пробел/цифры/буквы с помощью символа.isDigit & character.isLetter method, когда пользователи входят в String. Можете ли вы, ребята, посоветовать мне?Чтение ввода от пользователя и игнорирование пробелов между словами, преобразование букв в номера телефонов

Когда я попробовал вход с GETLOAN (без пробела), он хорошо работает ... Но когда я ввожу пробел между e..g. Получить кредит, программа выдает ошибку ..

public static void main(String[] args) { 

    String letters; 
    char phoneDigit; 

    Scanner kb = new Scanner(System.in); 

    System.out.println("Enter letters : "); 
    letters = kb.next(); 

    for (int i = 0; i < 7; i++) { 

     phoneDigit = letters.charAt(i); 

     // Using character.isDigit... 
     if (Character.isDigit(phoneDigit) == true || Character.isLetter(phoneDigit) == true); 
     { 

      if (i == 3) { 
       System.out.println("-"); 
      } //If 

      if (phoneDigit >= 'A' && phoneDigit <= 'C' 
        || phoneDigit >= 'a' && phoneDigit <= 'c') { 

       System.out.println("2"); 

      } else if (phoneDigit >= 'D' && phoneDigit <= 'F' 
        || phoneDigit >= 'd' && phoneDigit <= 'f') { 

       System.out.println("3"); 

      } else if (phoneDigit >= 'G' && phoneDigit <= 'I' 
        || phoneDigit >= 'g' && phoneDigit <= 'i') { 

       System.out.println("4"); 

      } else if (phoneDigit >= 'J' && phoneDigit <= 'L' 
        || phoneDigit >= 'j' && phoneDigit <= 'l') { 

       System.out.println("5"); 

      } else if (phoneDigit >= 'M' && phoneDigit <= 'O' 
        || phoneDigit >= 'm' && phoneDigit <= 'o') { 

       System.out.println("6"); 

      } else if (phoneDigit >= 'P' && phoneDigit <= 'S' 
        || phoneDigit >= 'p' && phoneDigit <= 's') { 

       System.out.println("7"); 

      } else if (phoneDigit >= 'T' && phoneDigit <= 'V' 
        || phoneDigit >= 't' && phoneDigit <= 'v') { 

       System.out.println("8"); 

      } else if (phoneDigit >= 'W' && phoneDigit <= 'Z' 
        || phoneDigit >= 'W' && phoneDigit <= 'z') { 

       System.out.println("9"); 
      } // If 
     } // If 
    } // For loop 

} //PSVM 
+1

Пожалуйста, разместите сообщение об ошибке. –

+0

Привет, ребята, я получил «Индекс String вне диапазона: 3» из IDE ... Есть ли какой-либо возможный способ решить эту проблему? –

+0

Да, пожалуйста, проверьте мой ответ ниже. –

ответ

0

удалить точку с запятой (;) отсюда

if (Character.isDigit(phoneDigit) == true || Character.isLetter(phoneDigit) == true);//semicolon 

; означает конец statement.This означает if условия закончилось there.The отчетности по if будет всегда выполняются независимо от того, что возвращает if (истинное или ложное), поэтому остальные утверждения под {} будут просто вести себя как нестатические блоки

Когда я попробовал вход с GETLOAN (без пробела), он работает хорошо ... Но когда я ввожу пробел между e..g. Получить кредит, программа выдает ошибку ..

Вы получаете сообщение об ошибке при вводе пространства по причине, указанной выше, я также заявление по if всегда будет выполнен

+0

Вы получаете исключение StringIndexOutOfBounds, независимо от того, удаляете ли вы точку с запятой или нет. Это связано с тем, что сканер разбивает inpout на пробел. –

+0

@SamuelRenold if; есть ли тогда вы думаете, что {} всегда будет выполняться? – SpringLearner

+0

Да, но ошибка возникает в обоих случаях. –

0

Если ввести два слова, разделенного пробел, например «получить кредит», сканер создает два выходных элемента, то есть вызов kb.next() просто возвращает «get». Второй вызов будет возвращать «кредит». Класс Scanner не подходит для использования в ваших целях. использовать что-то вроде

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
System.out.print("Enter String"); 
String s = br.readLine(); 

читать из консоли.

+0

Спасибо за предложение Самуила! Есть ли способы игнорировать пробелы, цифры и буквы? –

+0

Вы можете переопределить разделитель по умолчанию по умолчанию, используя useDelimiter (...) из класса Scanner. Помните, что целью класса Scanner является токенизация строк. –

+0

Очень простой способ удаления пробелов из строки: 'letter = letter.replace (" "," "); –

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