【问题标题】:Holding multiple values at same index in array在数组中的同一索引处保存多个值
【发布时间】:2015-09-16 02:08:24
【问题描述】:

我的代码检索了多个步骤,然后将通过 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));
}

有什么更好的方法来存储这些值,以便以后轻松检索它们?我很确定我的方法行不通。

【问题讨论】:

  • 这是什么语言/平台?
  • 在面向对象的语言中你应该使用...对象。

标签: java arrays loops indexing structure


【解决方案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,因为它是动态的,您可以在程序运行时添加新元素。 然后您可以使用循环将数据保存在其中:

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));
}

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

您现在可以通过调用 Datastorage 类的“getter”来从数组中获取数据。 例如:

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

为您提供“itemNumber”标题的值。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      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

      干杯

      【讨论】:

        猜你喜欢
        • 2013-01-23
        • 1970-01-01
        • 1970-01-01
        • 2021-11-12
        • 1970-01-01
        • 2016-04-09
        • 1970-01-01
        • 2021-08-27
        • 1970-01-01
        相关资源
        最近更新 更多