Как вы читаете файл и устанавливаете указанные c значения с плавающей запятой в указанный c массив в java? - PullRequest
0 голосов
/ 10 апреля 2020

Допустим, у меня есть файл, настроенный так:

20 88,6

16 71,6

19,8 93,3

18,4 84,3

17,1 80,6

15,5 75,2

14,7 69,7

17,1 82

Два значения с плавающей точкой разделены пробелом, скажем, что слева значения x, а справа - значения y, как мне прочитать файл и сохранить значения x в одном массиве, а значения y в другом?

public static Float[] getData() throws FileNotFoundException {
    float data;
    List<Float> temps = new ArrayList<Float>();

    Scanner inFile = new Scanner(new File("cricket"));
    while(inFile.hasNext()) {

        data = inFile.nextFloat();
        temps.add(data);

    }
    inFile.close();

    for(int i = 0; i<=temps.size(); i++) {
    Float[] tempsArray = temps.toArray(new Float[0]);

    }
    return tempsArray;


}

Пока это мой код, у меня есть все значения в одном массиве, я не уверен, как их разделить.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Вы можете инкапсулировать содержимое каждой строки как объект типа Data и добавить их в ArrayList. Затем вы можете прочитать каждый элемент ArrayList из Data и добавить его в два массива: arrX и arrY, которые вы можете использовать. Смотрите пример ниже.

public class Main {
   public static void main(String[] args) throws FileNotFoundException {    
      List<Data> dataList = getData("cricket");
      final int size = dataList.size();
      float[] arrX = new float[size];
      float[] arrY = new float[size];
      int i = 0;
      for (Data data : dataList) {
         arrX[i] = data.x;
         arrY[i] = data.y;
         i++;
      }
      // now you can use the arrX and arrY arrays
   }

   public static List<Data> getData(String file) throws FileNotFoundException {
      List<Data> dataList = new ArrayList<>();
      try (Scanner sc = new Scanner(new File(file))) {
         while (sc.hasNext()) {
            dataList.add(new Data(sc.nextFloat(), sc.nextFloat()));
         }
      }
      return dataList;
   }

   static class Data {
      float x;
      float y;

      public Data(final float x, final float y) {
         this.x = x;
         this.y = y;
      }
   }
}
0 голосов
/ 10 апреля 2020

Как насчет настройки файла с символом-разделителем? Затем вы можете выполнить split () и добавить каждую сторону разбиения в соответствующий массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...