2015-07-31 5 views
-5
a=10.00; 
b=11.00; 
mor_names=new String[]{}; 
for(double cal=Double.parseDouble(a);cal<=Double.parseDouble(b);) { 
    mor_names[val]=(Double.toString(cal)); 
    System.out.println("values are:" + mor_names[val]); 
    val++; 
    cal=cal+0.15; 
} 

Я пытаюсь добавить значение в массив строк, но оно вызывает исключение нулевого указателя, почему?String array возвращает исключение пустой указателя

EDIT 1:

DateFormat time = new SimpleDateFormat("HH:mm"); 
try 
{ 
    timefrom =(Time) time.parse(json.get(position).toString()); 
    timeto = (Time) time.parse(json.get(position).toString()); 
} 
catch (ParseException e) 
{ 
    e.printStackTrace(); 
} 

Calendar cal = Calendar.getInstance(); 

System.out.println("times are :"+timefrom+" "+timeto+" "+position);//null null 0 was output for this 

for(Time i=timefrom;i.equals(timeto);) 
{ 
    cal.setTime(i); 
    System.out.println("values are:" + i); 
    mor_names[val]=(String) i.toString(); 
    cal.add(Calendar.MINUTE, 15); 
    System.out.println("values are:" + mor_names[val]); 
    String newTime = df.format(cal.getTime()); 
    try 
    { 
     i=new java.sql.Time(time.parse(newTime).getTime()); 
    } 
    catch (ParseException e) 
    { 
     e.printStackTrace(); 
    } 
    val++; 
} 

Я пытался получить дату в частности, разрыв во времени, так что я пытаюсь тонуть с календарем Java и манипулировать мой код, но, возможно, я не могу получить это право.

+0

Возможный дубликат [Что такое исключение Null Pointer Exception и как его исправить?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how -do-i-fix-it) – PakkuDon

+0

Где именно "val"? В Java массивы не динамически растут. Вы объявляете массив размером 0. –

+0

Что такое переменная типа a и b? –

ответ

1

Давайте рассмотрим код:

a=10.00; 
b=11.00; 

Из этого можно предположить, что a и b являются тип Double, так что вы не можете использовать double cal = Double.parseDouble(a), чтобы получить значение double. Это было бы правильно, если бы a и b был типа String:

String a="10.00"; 
String b="11.00"; 

Следующая строка:

mor_names=new String[]{}; 

инициализирует пустой массив строк. В {} Скобки используются с массивами, как так, чтобы инициализировать массив со значениями:

String[] mor_names = {"Hello", "World", "!"}; 

и это то же самое, как:

String[] mor_names = new String[]{"Hello", "World", "!"}; 

Вы хотите присвоить значения массива, так что вы можете инициализировать массив как то:

String[] mor_names = new String[7]{}; 

с тем, что вы не можете хранить больше значения в mor_names чем 7 с индексами от 0 до 6.

Если вы хотите более гибко использовать подход ArrayList:

ArrayList<String> mor_names = new ArrayList<String>(); 

это создаст «динамический массив», где вы можете add, remove и get ваших String объектов.

Петля для:

for(double cal = Double.parseDouble(a) ; cal<=Double.parseDouble(b) ;) 

Позволяет исправить одну вещь так же, как мы упоминали ранее, при условии, что a и b являются тип double.

for(double cal = a ; cal <= b ;) 

Во-первых, cal переменная инициализируется со значением a. For - это цикл, и он будет повторять код между круглыми скобками {} до тех пор, пока не будет cal <= b.Вы приращение cal значения внутри этого цикла, но это не является необходимым - вы можете сделать это следующим образом:

for(double cal = a ; cal <= b ; cal+=0.15) 

Это означает, что каждый раз, когда код внутри цикла был выполнен до конца, cal будет увеличиваться на 0.15 , Тогда, если cal меньше или равно b, код будет повторяться. В противном случае цикл закончится.

NullPointerException будет расти, если вы пытаетесь присвоить значение String неинициализированному массиву. Но это не то, что здесь происходит, потому что mor_names не null.

Вы должны прочитать об инициализации переменных и использовании массивов и контейнеров в java. Удачи.

EDIT 1:

Вы даете неполные данные. Вы должны предоставить все, что делает ваш вопрос прочным, особенно строгим и конкретным описанием того, что вы пытаетесь архивировать.

Подробнее о How to parse JSON in Java и Java - Date & Time. Используйте Google и читайте с пониманием.

Также об использовании стека переполнение необходимо начинать here.

Еще раз, удачи.

0
String a="10.00"; 
String b="11.00"; 
int val=0; 
String [] mor_names=new String[10]; 
for(double cal=Double.parseDouble(a); cal<=Double.parseDouble(b);){ 
    mor_names[val]=(Double.toString(cal)); 
    System.out.println("values are:" + mor_names[val]); 
    val++; 
    cal=cal+0.15; 
} 

Вы можете использовать этот код. Если вы хотите динамический массив строк, вы должны использовать список или карту.

+0

Прежде чем отправлять ответ, просмотрите 'Preview' и убедитесь, что ваш отступ верен. – Karthik

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