2016-11-02 6 views
-1

пытается написать класс Java с именем Algebra, который будет иметь статические методы, представляющие реляционную алгебру, и один дополнительный метод, который отображает содержимое таблицы тильды и работает с любой таблицей тильды. таблица будет иметь следующие атрибуты и ограничение:Как разобрать/прочитать таблицу с тильдой в формате .txt в JAVA и написать методы для реляционной алгебры/SQL

-при большинство 12 колонн

-first строка представляет имена столбцов

-вс столбцов являются строками

-column значения и имена столбцов ограничены до 16 символов

Но не может загрузить все строки в массив или другую коллекцию. Все методы, кроме метода отображения, возвращают строку, указывающую на успех или сообщение об ошибке, и для каждой успешной операции на диске создается новая таблица тильдов. Поэтому мне нужно написать метод, чтобы показать таблицу, операцию проекта, операцию соединения, операцию ограничения (условие ограничения может быть ограничено одним условием (поэтому нет ИО и OR) и сравнителей можно ограничить этими шестью: = ,>, <,> =, < =,! =).

Так как основная часть программы драйвера может выглядеть следующим образом:

//restrict the cars table to toyotas producing a table named toyotas 

Algebra.Restrict("cars","MAKE='Toyota'","toyotas"); 

//project just three columns from the toyotas table producing a table named answer 

Algebra.Project("Toyotas","Make,Model,Price","answer"); 

//display the contents of the answer table 

Algebra.Display("answer"); 

выхода будет:

MAKE MODEL PRICE 

---------------- ---------------- ---------------- 

Toyota Camry 18000 

Toyota Tacoma 19000 

Toyota Highlander 35000 

cars.txt файл, содержащие тильды таблицы

MAKE~MODEL~TYPE~PRICE 

Toyota~Camry~Sedan~18000 

Toyota~Tacoma~Truck~19000 

Ford~Mustang~Sport~21000 

Chevrolet~Corvette~Sport~48000 

Ford~F150~Truck~25000 

Toyota~Highlander~SUV~35000 

Что я до сих пор

import java.io.*; 
import java.util.*; 
import javax.swing.JOptionPane; 
import javax.swing.JTable; 
import javax.swing.table.DefaultTableModel; 


public class Algebra { 
    public void readData() throws FileNotFoundException, IOException{ 


    BufferedReader in = new BufferedReader(new FileReader 
     ("cars.txt")); 

    String line; 
    while((line = in.readLine()) !=null){ 
     System.out.println(line); 

    } 

    in.close(); 


    } 
    /*Method used to restrict data--Using WHERE clause*/ 
    public void Restrict(){ 

    } 
    /*Method used to project data--Using SELECT clause*/ 
    public void Project(){ 

    } 
    /*Method used to join the data--Using JOIN clause*/ 
    public void Join(){ 

    } 
    /*Display results from combination of previous methods*/ 
    public void Display(){ 

    } 
} 
+1

Посмотрите на метод String.split. Что на Земле это связано с SQL? – OldProgrammer

+0

Я удалил неточные теги. –

+0

спасибо за удаление, извините, что на самом деле было больше проблем, которые я решил не публиковать (еще три метода показать реляционную алгебру для SQL-проекта, ограничение и минус) и забыл удалить тег. –

ответ

0

Если единственным требованием является то, чтобы напечатать файл построчно за строкой, существующий readData() метод достаточно, при условии, что правильный путь к файлу подается в FileReader созданного объекта.

Если, кроме того, каждая линия должна быть разделена на 4 полях, используя ~ в качестве разделителя, следующий оператор (внутри цикла while) производит массив из 4 полей в каждой строке:

String[] fields = line.split("~"); 

Пробелы в начале или конце строки или вокруг разделителя ~ можно удалить с помощью метода String trim(). Для сепаратора их также можно удалить, увеличивая регулярное выражение в методе split() до split("\\s*~\\s*").

 Смежные вопросы

  • Нет связанных вопросов^_^