2013-12-03 2 views
0

У меня есть код обработки, который я знаю, работает. Но когда я начинаю переписывать код в настройку и рисовать установку (я думаю, что ее называют активной), она дает мне «NullPointerException» при ее запуске. Это может быть что-то с массивами? надеюсь, что вы можете мне помочь :) (и да, я знаю, что это много написания кода ведомого кода, но это был единственный способ, которым я мог это понять: 3 im новичок в обработке и кодировании вообще. Также я исключил некоторые из рабского материала, так что это был только код я знаю, дал мне проблемы):NullPointerException в обработке 2

//stating the int's and strings 
String[] lines = loadStrings("brown.txt");//the array with the words 
String longString = join(lines, " "); //joining the array to a normal string of words 
int characters = longString.length(); //used to find the amount of all the letters 
String lowercase = longString.toLowerCase();//makes sure all the letters are lowercased 

//setting up the letter freqiency finder 
char[] c = lowercase.toCharArray(); //used to make a character array 
int freq = 0, freq2 = 0, freq3 = 0, freq4 = 0,    //| 
freq5 = 0, freq6 = 0, freq7 = 0, freq8 = 0, freq9 = 0,  //| 
freq10 = 0, freq11 = 0, freq12 = 0, freq13 = 0,    //|naming and setting all the frequencies 
freq14 = 0, freq15 = 0, freq16 = 0, freq17 = 0, freq18 = 0, //| 
freq19 = 0, freq20 = 0, freq21 = 0, freq22 = 0, freq23 = 0, //| 
freq24 = 0, freq25 = 0, freq26 = 0;       //| 

void setup() { 
    size(600, 600); 
    background(255); 
} 

void draw() { 
//setting up the letter counters 
    for (int i = 0; i< c.length; i++) 
    { 
    if (c[i]=='a') 
     freq++; 
    if (c[i]=='b') 
     freq2++; 
    ......... etc 

ответ

0

вы не должны 'Переменная манипуляция вне функции в обработке. До setup() вы должны объявить ваши переменные, но вы даете им значения в setup(). См. here (в разделе «Чтение и написание текстовых файлов»). Вот то, что вы должны делать с вашим кодом:

String[] lines; 
int[] freq; 

void setup(){ 
    size(600,600); 
    background(255); 
    lines = loadStrings("brown.txt");//the array with the words 
    if(lines == null){ 
     print("error loading strings!"); 
    } 
    String longString = join(lines, " "); //joining the array to a normal string of words 
    int characters = longString.length(); //used to find the amount of all the letters 
    String lowercase = longString.toLowerCase();//makes sure all the letters are lowercased 

    //setting up the letter frequency finder 
    char[] c = lowercase.toCharArray(); //used to make a character array 
    freq = new int[26]; 
    for(int i = 0; i < c.length; i++){ 
     //chars are really just numbers and a-z is consecutive, so 'a' - 'a' = 0, 'b' - 'a' = 1, 'c' - 'a' = 2... 
     // note that you can also check to see if a character is between a-z by doing if(chr >= 'a' && chr <= 'z'){} 
     freq[c[i] - 'a']++; 
    } 
} 
void draw() {} 
+0

Большое вам спасибо! : D это сработало! – user3062205

+0

Приветствия. Боковое замечание: я переместил весь код в функцию 'setup()', потому что нет необходимости запускать его 60 раз в секунду, что и делает 'draw()' once ... достаточно. – kevinsa5

0

попробовать этот String[] lines = new String[]{}; то lines = loadStrings("brown.txt");, если проблема не устранена проблема, конечно, в вашем методе LoadString

+0

Спасибо за ответ :) Я попытался его установить его вверх, как это сейчас: String [] строки = новый String [] {}; и следующая строка lines = loadStrings ("brown.txt"); но это soesnt работа :) – user3062205

+0

Одно из важных правил в ООП. Каждый раз, когда вы используете ссылку сначала, проверьте, не является ли она нулевой, это сэкономит вам много времени! :) –

+0

И извините за вопрос, но как я могу проверить, если он равен нулю или нет? :) – user3062205

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