java - 在java中填充未初始化的数组? (或解决方法!)

标签 java android opengl-es inputstream dynamic-memory-allocation

我目前正在为 opengles android 游戏创建 OBJ 导入器。我对 java 语言比较陌生,所以我不太清楚一些事情。

我有一个数组,它将保存模型中的顶点数(以及其他一些数组):

float vertices[];

问题是在使用提供给我的输入流读取文件之前,我不知道模型中有多少个顶点。

我可以根据需要填写吗?:

vertices[95] = 5.004f; //vertices was defined like the example above

还是我必须事先初始化它?

如果是后者,那么找出文件中顶点数的好方法是什么?一旦我使用 inputstreamreader.read() 读取它,它就会转到下一行,直到它读取整个文件。我唯一能想到的就是读取整个文件,计算顶点数,然后再次读取它以填充新初始化的数组。

有没有办法根据需要动态分配数据?

最佳答案

您可以使用 ArrayList,它会为您提供所需的动态大小。

   List<Float> vertices = new ArrayList<Float>();

您可以像这样添加一个值:

   vertices.add(5.0F);

列表会根据您的需求增长。

一些注意事项:ArrayList 将保存对象,而不是基本类型。因此它将您提供的浮点值存储为 Float 对象。但是,很容易从中得到原始的浮点值。

如果您绝对需要一个数组,那么在您读入整个值列表后,您可以轻松地从列表中获取一个数组。

您可以开始阅读有关 Java 集合的信息 here .

关于java - 在java中填充未初始化的数组? (或解决方法!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4550911/

相关文章:

android - 在安卓中显示定时器

java - 如何删除 android TimePicker 周围的空间

java - android COuntDownTimer 停止并启动新的计时器

android - 如何结合 OpenGL 使用 onSensorChanged 传感器数据

android - Android OpenGL ES 如何识别触摸到的物体

java.lang.ClassCastException : android. widget.LinearLayout 无法转换为 android.support.v7.widget.Toolbar

java - jOOQ 和 Spring 事务管理

java - 通过类名查找 pom 依赖项

java - Liquibase 将日志写入 stderr

ios - 使用 OpenGL ES 在 iPhone 上渲染到立方体贴图