распознавание первой буквы в потоке ввода

1

Привет, у меня есть этот метод, который обслуживает мой входной поток.

private String getMessage(InputStream in) throws IOException {

     StringBuilder sb = new StringBuilder();

     int pom;

     while((pom = in.read()) != -1){             
        char znak = (char) pom;
        sb.append(znak);                   

        if (sb.toString().contains("\r\n")) {                  
               String result = sb.toString();                                       
               result = result.replace("\r\n", "");
               return result;
        }
     }   
     return null;
}

Я хотел бы узнать, является ли первое письменное письмо "я" или нет. Если это не "я", я хочу закончить ввод. Как я могу получить первое письмо и сразу проверить его?

  • 0
    char c = string.charAt (0);
Теги:
input

2 ответа

0
Лучший ответ

Проверьте первый символ в StringBuffer:

   private String getMessage(InputStream in) throws IOException {

            StringBuilder sb = new StringBuilder();

            int pom;

            while((pom = in.read()) != -1){             
               char znak = (char) pom;
               sb.append(znak);                   
               if ( sb.charAt(0) != 'I')
                   break;
               if (sb.toString().contains("\r\n")) {                  
                      String result = sb.toString();                                       
                      result = result.replace("\r\n", "");
                      return result;
               }
            }   
            return null;
       }
  • 0
    Спасибо! Это помогло мне. :)
1

Вам нужно использовать Reader ! Прямо сейчас вы используете InputStream и это считывает байты, а не символы.

Это означает, что вам также необходимо знать кодировку вашего потока.

Предположим, что это UTF-8, вы можете сделать:

String line;

try (
    BufferedReader reader = new InputStreamReader(in, StandardCharsets.UTF_8);
) {
    while ((line = reader.readLine()) != null)
        if (line.charAt(0) == 'l')
            break;
}

Обратите внимание, что BufferedReader .readLine() автоматически .readLine() строки.

  • 0
    Я знаю, по каким-то причинам мне нужно получать информацию побайтово. Извините, я должен был сказать это в первом сообщении.
  • 0
    Для этого нет причин. Не забывайте, что Reader действительно читает базовые байты, а затем конвертирует их в символы на лету.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню