在数组中的相同索引处保存多个值

时间:2015-06-29 14:41:46

标签: java arrays loops indexing structure

我的代码检索了许多步骤,然后通过for循环在每一步输出一条指令。将有标题,描述,视频和音频。但是,我试图想办法将每个变量存储到一个结构中。这就是我提出的,但我不认为数组可以在同一个索引处存储多个值。

for(int i = 0; i < QRData.number_steps; i++){
        System.out.println("Inside for loop");
        array[i].setTitle(btn_instructions.get(i));
        array[i].setDescription(instruction_row.get(i));
        array[i].setInstructionVideo(videos.get(i));
        array[i].setAudioInstruction(audio.get(i));
}

存储这些值的更好方法是什么,以便以后检索它们?我很确定我的方法不起作用。

3 个答案:

答案 0 :(得分:1)

你应该创建一个像这样的对象:

public class DataStorage{

  private String title;

  private String description;

  private File audioFile;

  private File videoFile;

  public DataStorage(String title, String description, File audioFile, File videoFile){
    this.title = title;
    this.description = description;
    this.audioFile = audioFile;
    this.videoFile = videoFile;
  }

  public String getTitle(){
    return this.title;
  }
 //similar for "description", "audioFile" and "videoFile"
 //...
}

对于DataStorage,我建议使用ArrayList,因为它是动态的,您可以在Programm运行时添加新元素。 然后你可以用循环保存数据:

ArrayList<DataStorage> storage = new ArrayList<>();

for(int i = 0; i < QRData.number_steps; i++){
    storage.add(new DataStorage(btn_instructions.get(i),instruction_row.get(i),
    videos.get(i),audio.get(i));
}

这是面向对象编程的基本概念,用于定义存储自定义数据的类。

现在,您可以通过调用&#34; getters&#34;来获取数据。您的Datastorage类。 例如:

String title = storage.get(itemNumber).getTitle();

为您提供&#34; itemNumber&#34;的值名称

答案 1 :(得分:0)

您应该创建一个新对象来存储这些值,然后将该对象存储在数组中。

答案 2 :(得分:0)

你必须使用对象数组,使用它你将创建一个类和类的数组,例如检查以下代码:

class Person{
private String name;
private Integer age;

Person(String name,Integer age){
     this.name=name;
     this.age=age;
}
----getters and setters methods-----

}

class Test{
public static void main(String args[]){
Person arr[]=new  Person[10];
arr[0]=new Person("Alex",26);
}
}

在此处查看完整示例http://www.java2s.com/Tutorial/Java/0200__Generics/ArraysStoringclassobjectsinArrayasdataitems.htm

干杯