Сканирование файла и одновременное получение двух токенов и сохранение их в ArrayList

#java #token #polynomials

#java #токен #многочлены

Вопрос:

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

Вот как выглядит мой файл .txt: «5.6 3 4 1 8.3 0», который представляет многочлен 5.6x ^ 3 4x 8.3

Я должен отсканировать файл из JFileChooser, а затем добавить токены в ArrayList типа Polynomial. Мой вопрос / проблема в том, как я могу запустить содержимое файла через цикл for и отделить первый токен (коэффициенты) от второго токена (экспоненты), а затем добавить их в ArrayList? Мне понадобятся показатели, которые должны иметь тип int, а коэффициенты должны быть двойными.

Это то, что у меня есть до сих пор:

ArrayList aList = новый ArrayList();

     // scanner used to read each line
    try {
        scan = new Scanner(file);

        if (file.isFile()) {
            while (scan.hasNext()) {

                for (int i = 0; i < something.size(); i  ) {
                       //this is where I'm lost, not sure what I need to do here
               }
                
            }
        }
      ....
  

Спасибо, ребята, я ценю помощь.

-Linden

Редактировать:

Хорошо, я понял это, это было намного сложнее, чем я думал. Вот что я сделал: Scanner scan = новый сканер (файл);

         if (file.isFile()) {
            for (int i = 0; i <=2; i   ) {
                term(scan);
            }
        }

static void term(Scanner scan) {
    String s = scan.nextLine();
    String [] splitter = s.split(" "); 
    String coefficient = splitter[0];
    String exponent = splitter[1];
    //populating 
    try {
        arrayList.add(new Polynomial(coefficient, exponent));
    } catch (InvalidPolynomialSyntax e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
  

Спасибо двум парням, которые пытались мне помочь, и 24 зрителям, которые не lol

Ответ №1:

Сначала вам нужно взглянуть на класс scanner . Какие у него есть методы, которые вы должны использовать для получения необходимых вам данных?

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

Итак, посмотрите документацию по классу scanner и посмотрите, что в ней есть, что вы можете использовать.

Начните с простой попытки распечатать каждую строку. Как только вы это сделаете, вы можете подумать о том, как вы хотите их сравнить.

Комментарии:

1. Спасибо, сэр, я смог это выяснить!

Ответ №2:

вы можете прочитать файл как одно предложение. Сначала получите весь текст, например, в 5.6 3 4 1 8.3 0 виде строки. Затем вы можете просто использовать String [] arrayOfNumbers = yourString.split(" "); это, чтобы разделить строку в соответствии с " " символом, чтобы вы получали числа напрямую.

Комментарии:

1. Спасибо, брат! Я использовал это и понял это 🙂