Member 14838257 Ответов: 1

2darrays и файлы с использованием java


Привет всем! Я хочу прочитать некоторые два элемента из файла!
В моем досье есть что-то вроде этого:
180 2.3
25 0.12 //первый элемент-это количество игр, второй-стоимость каждой игры
для хранения этих данных я решил сделать 2d-массив и поместить их внутрь.К сожалению,я не знаю каждый раз, сколько строк в моем файле.Итак, я подумал посчитать количество строк, составляющих мой массив, и после этого поместить свои данные в массив. Это не работает.
еще я хотел бы спросить, какого типа будет мой массив??

Что я уже пробовал:

Я пробовал это, я знаю, что у меня есть ошибки, но как это исправить??
        while(sc.hasNextLine()){  //count the numbers of lines
            sc.nextLine();
            numlines++;
        }
float a1[][]= new float a1[numlines][2];
int c=0; 
while(sc.hasNext()){
        a1[c][0]=sc.nextInt();
        a1[c][1]=sc.nextFloat();
        c++
}
System.out.println(Array.deeptoString(a1));

не могли бы вы предложить мне что-нибудь, чтобы исправить мой код и заставить его работать??

1 Ответов

Рейтинг:
2

phil.o

Вы путаетесь в том, что такое многомерный массив.
Двумерный массив использует два целых индекса для хранения одного значения определенного типа.
В вашем случае вам нужно создать класс, содержащий количество и стоимость; затем вы можете поместить некоторые экземпляры этого класса в список (более гибкий) или в одномерный массив (менее гибкий, поскольку вы должны знать, сколько элементов будет содержать массив при его создании).
И вы всегда должны использовать BidgDecimal тип для хранения и выполнения расчетов по значениям, которые представляют собой деньги (float и double тип не рекомендуется для этого, так как их природа с плавающей запятой может привести к ошибкам округления).

public class GameLine
{
   private int Quantity;
   private BigDecimal Cost;

   // Define getters, setters, and constructor
}

Затем вы можете создать список GameLine объекты, а при повторении вашего текстового файла для каждой строки создайте новую GameLine объект и добавьте его в список. В конце процедуры вы можете превратить свой список в массив, если это необходимо, но это не обязательно.