2014-02-02 3 views
-1

Почему мой компилятор не признает глобальное значение, которое я сделал? Вот не мой код:Не удается распознать глобальную переменную

public class decoder_{ 
public static int c;//counter 
public static double temp[];//for table upper 
public static double temp1[];//for table lower 
    public static void main(String [] args) 
    { 

Затем я использую его в main:

case 'a': 
lower = lower + (current_range *la); 
upper = lower+ (current_range *ha); 
temp[c]= upper; 
temp1[c]=lower; 
c++; 
break; 

Там никакой ошибки компиляции, но появляется следующее сообщение во время выполнения 1:

Exception in thread "main" java.lang.NullPointerException 
     at decoder_.main(decoder_.java:95) 
+2

Это исключение является ошибкой. –

+0

Было бы не так много, чтобы учиться на этой трассе стека. NPE в основном методе - это почти все, что есть. –

ответ

0

Проблема что вы не создаете свои массивы. Попробуйте следующее:

public static double temp[] = new double[10];//for table upper 
public static double temp1[] = new double[10];//for table lower 

Вы также можете найти лучшие имена для своих массивов.

+0

Я не знаю, как я пропустил это, любыми способами, как я могу сделать длину массива меняющейся в соответствии с приращением c, например, если с приращением с удвоенной длиной массива равно 2, если он увеличивается больше, чем длина массива становится выше, а не просто const, как 10, много спасибо – user3238172

+0

Если вы хотите изменить длину, не используйте массив. Возможно, ArrayList - это то, что вы хотите. Или, может быть, Дека. Читайте в [java collections] (http://docs.oracle.com/javase/tutorial/collections/). –

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