2015-11-04 2 views
0

Я хотел бы добавить текстуру к моей модели, но я продолжаю получать эту ошибку. Любая помощь будет оценена по достоинству. Благодаряjava.lang.NumberFormatException: Invalid int: "" model texture

for (String i : faces) { 
    for (String j : i.split(" ")) { 
     iCoords[faceIndex] = (short) faceIndex++; 
     String[] faceComponent = j.split("/"); 

     String vertex = vertexes.get(Integer.parseInt(faceComponent[0]) - 1); 

     // this line throws NFE 
     String texture = textures.get(Integer.parseInt(faceComponent[1]) - 1); 
     String vertexComp[] = vertex.split(" "); 
     String textureComp[] = texture.split(" "); 

     for (String v : vertexComp) { 
      vCoords[vertexIndex++] = Float.parseFloat(v); 
     } 

     for (String t : textureComp) { 
      tCoords[textureIndex++] = Float.parseFloat(t); 
     } 
    } 
} 

java.lang.RuntimeException: Невозможно начать деятельность ComponentInfo {com.app.glapp/com.app.glapp.MainActivity}: java.lang.NumberFormatException: Invalid INT: ""
        на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2413)
        на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2471)
        в android.app.ActivityThread.access $ 900 (ActivityThread.java:175)
        в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1308)
        на android.os.Handler.dispatchMessage (Handler.java:102)
        на android.os.Looper.loop (Looper.java:146)
        на android.app.ActivityThread.main (ActivityThread.java:5603)
        на java.lang.reflect.Method.invokeNative (нативный метод)
        в java.lang.reflect .Method.invoke (Method.java:515)
        в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1283)
        в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1099)
        на dalvik.system.NativeStart.main (нативный метод)
Вызванный: java.lang.NumberFormatException: недействительный INT: ""
        в java.lang.Integer.invalidInt (Integer.java:137)
        в java.lang.Integer.parseInt (Integer.java:358)
        в java.lang.Integer.parseInt (Integer.java:331)
        в com.mingatronenterprices.glapp.mesh. (Mesh.java:72)
        в com.mingatronenterprices.glapp .ClearRenderer. (MainActivity.java:70)
        at com.app.glapp.ClearGLSurfaceView. (MainActivity.Java: 54)
        на com.app.glapp.MainActivity.onCreate (MainActivity.java:32)
        на android.app.Activity.performCreate (Activity.java:5458)
        на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1093)
        на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2377)
        в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2471)
        в android.app.ActivityThread.access $ 900 (ActivityThread.java:175)
        на андроид .app.ActivityThread $ H.handleMessage (ActivityThread.java:1308)
        в android.os.Handler.dispatchMessage (Handler.java:102)
        на android.os.Looper.loop (Looper.java:146)
        на android.app.ActivityThread.main (ActivityThread.java:5603)
        в java.lang. reflect.Method.invokeNative (Родной метод)
        на java.lang.reflect.Method.invoke (Method.java:515)
        в com.android.internal.os.ZygoteIn это $ MethodAndArgsCaller.run (ZygoteInit.java:1283)
        в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1099)
        в dalvik.system.NativeStart. основной (Native Method)

+1

Ну ясно, что элементы вашего 'faceComponent' или' 'vertexCompo' или textureComp' массивы не могут быть разобраны, как целые числа/поплавки. Используйте отладчик и исправьте шаблон разделения. – Mena

+0

Добавьте в текст вопроса исключение (+ stacktrace). И убедитесь, что ваша строка 'j' не выглядит как' [number] // [number] '(например,' 1 // 2'). Вы не можете использовать двойную косую черту (или больше) с вашим текущим кодом. – Tom

+0

Том, на самом деле, я думаю, это может выглядеть так. Как мне его изменить? Я новичок во всех этих методах разделения. Спасибо за ответ! – limus

ответ

0

Попробуйте изменить так:

 for (String v : vertexComp) { 
      try { 
       vCoords[vertexIndex++] = Float.parseFloat(v); 
      } 
      catch (NumberFormatException e) { 
      } 
     } 

     for (String t : textureComp) { 
      try { 
       tCoords[textureIndex++] = Float.parseFloat(t); 
      } 
      catch (NumberFormatException e) { 
      } 
     } 
+0

Боюсь, что это не так. Исключение выбрано на «String texture ...."line – limus

+1

И не стоит игнорировать это исключение, потому что оно выглядит как ошибка программирования здесь, а не как« ожидаемое исключение ». – Tom

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