Java-метод CharAt дает сбой при сравнении с # - PullRequest
0 голосов
/ 15 сентября 2018

Итак, я хочу посмотреть, начинается ли строка с # в текстовом файле.Однако, когда я вызываю сравнение charAt(0) с #, это выдает ошибку.

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(Unknown Source)
    at StringTranslator.main(StringTranslator.java:63)

Сам код выглядит так (ну, часть, которая выполняет все сравнения)

String line;
line = br.readLine())
if(line.charAt(0) == '#')
{
    // this is a comment line ignore it
    writer.println(line);

}

Есть предложения, как сделать так, чтобы он распознал символ #?Заранее спасибо!Примечание: я использую UTF-8 encoding как для записи файла в блокноте, так и для чтения файла в коде!

Ответы [ 4 ]

0 голосов
/ 15 сентября 2018

Вам нужно проверить, не является ли строка пустой или не нулевой, а затем проверить, какой символ имеет индекс 0

if (!StringUtils.isEmpty(line) && line.startsWith("#")) {
    // do something
}
0 голосов
/ 15 сентября 2018

Ошибка «Строковый индекс вне диапазона: 0» означает, что у вас есть строка, в которой нет символов, то есть пустая строка.

0 голосов
/ 15 сентября 2018

Речь идет не о октоторпе , а о том, что вы читаете пустую строку.

Если вы хотите проверить, начинается ли строка с #, обрабатывая пустую строку, используйте:

line.startsWith("#")
0 голосов
/ 15 сентября 2018

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

if (line.length() > 0 && line.charAt(0) == '#')
...