2016-11-02 7 views
-1

관계형 대수를 나타내는 정적 메서드와 표시하는 추가 메서드가있는 Algebra라는 Java 클래스를 작성하려고합니다. 물결표 테이블의 내용 및 모든 물결표 테이블과 함께 작동합니다. 테이블은 다음과 같은 특성 및 제한해야한다 : 대부분의 12 열JAVA의 .txt 파일에서 물결표로 구분 된 테이블을 읽고 쓰는 방법과 관계형 대수/SQL에 대한 메서드를 작성하는 방법

-at

- 첫 행은 열 이름을 나타내는

- 모든 컬럼

-Column 값 열 이름 한정되는 문자열은 ~ 16 자

그러나 모든 행을 배열 또는 다른 모음으로로드 할 수 없습니다. 표시 메서드를 제외한 모든 메서드는 성공 또는 오류 메시지를 나타내는 문자열을 반환하고 성공적으로 수행 할 때마다 디스크에 새로운 물결표 표가 만들어집니다. 그래서 테이블, 프로젝트 작업, 조인 연산, 제한 연산 (제한 조건은 단일 조건 (AND 및 OR이 없으므로)으로 제한 될 수 있음)과 비교기를이 6 개로 제한 할 수있는 방법을 표시하는 메소드를 작성해야합니다. ,>, <,> =, < =,! =).

그래서 드라이버 프로그램의 본체는 다음과 같습니다

//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 프로젝트에 대한 관계형 대수를 표시하는 3 가지 방법, 제한 및 마이너스). 태그 제거를 잊어 버렸습니다. –

답변

0

기존 readData()있어서 올바른 파일로 작성한 FileReader 객체에 공급된다고 가정하면, 충분하다.

경우는, 또한, 각 라인은 라인 당 4 개 필드의 배열 생성 세퍼레이터합니다 ( while 루프 내) 다음 내용으로 ~를 사용하여, 4 개 필드에 분할하는

:

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

을 행의 시작 또는 끝 부분 또는 ~ 분리 자 주위의 공백은 trim() 문자열 메소드를 통해 제거 할 수 있습니다. 구분 기호의 경우 split() 메서드의 정규 표현식을 split("\\s*~\\s*")으로 강화하여 제거 할 수도 있습니다.