2016-12-11 2 views
-2

im с использованием функции decrypt для дешифрования зашифрованных строк в файле с использованием буферизованного считывателя, но проблема в том, что я использую функцию, которая генерирует NullPointerException, может ли кто-нибудь мне помочь? Заранее спасибо!Null pointer Исключение при дешифровании

Это мой functon:

public String Decrypt (String Word,int key) 
{ 
    String result=""; 
    for (int i=0;i<Word.length();i++) 
    { 
     result+=(char)(Word.charAt(i)-key); 
    } 
    return result; 
} 

BufferedReader код:

try { 
     BufferedReader out=new BufferedReader(new FileReader("array.txt")); 
     String line=""; 
     while((line=Decrypt(out.readLine(), 30)) !=null) // unknown exception 
     { 
     output.append("Your String is: \n"+ line); 
     } 
    }catch (FileNotFoundException ex) { 

      } catch (IOException ex) { 

      } 
+4

Ваши пустые блоки блокировки не являются хорошим знаком. Но из null указывает, что ваш путь к вашему файлу неверен. –

+0

Я проверил путь к моему файлу, его правильные 100% уверены в этом, и как вы думаете, что мое исключение является пустым, является основной проблемой? если да, то что я могу добавить внутри блоков catch? (извините, как я новичок в java) – menna

+0

Я также добавил полный путь к файлу без использования – menna

ответ

1

Это не чистый:

while((line=Decrypt(out.readLine(), 30)) !=null) 

Мы знаем, что Readline вернется null когда BufferedReader достигает конец потока согласно BufferedReader API, но ваша компания de неправильно обрабатывает это, а именно, ваш метод Decrypt вызовет вызов метода length() в параметре Word независимо от того, является он или нет. Я предлагаю вам не пытаться сделать ваш код слишком кратким и вместо этого отделить чтение Reader от действия на нем. например,

while((line= out.readLine) !=null) { 
    line = Decrypt(line, 30); 
    output.append("Your String is: \n"+ line); 
} 

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

Помимо 2: не оставляйте блоки блокировки исключения пустыми, так как это эквивалент Java, приводящий ваш автомобиль с закрытыми глазами. По крайней мере распечатайте трассировку стека и обязательно проверьте Exceptions Tutorial

+0

Я отредактировал свой код в соответствии с вашим примером, но я думаю, проблема в том, что функция дешифрования сама по себе в цикле for (компилятор останавливается при их исключении) – menna

+0

@menna: Просьба пояснить, поскольку я понятия не имею, что означает ваш комментарий выше. Возможно, вы захотите изменить свой вопрос и обновить его для нас. –

+0

, когда я нажимаю на свою консоль, исключение указывается автоматически с использованием компилятора (Netbeans), оно возвращается к моей функции дешифрования – menna

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