尝试编写一个名为Algebra的java类,它将具有表示关系代数的静态方法,以及一个显示波浪表的内容并与任何波浪表一起使用的附加方法。 table将具有以下属性和限制:
- 最多12列
- 第一行代表列名
-all列是字符串
- 列值和列名限制为16个字符
但无法将所有行加载到数组或其他集合中。除了display方法之外的所有方法都返回一个表示成功或错误消息的字符串,并且对于每个成功的操作,都会在磁盘上生成一个新的波形表。所以我需要编写方法来显示表,项目操作,连接操作,限制操作(限制条件可以限制为单个条件(因此没有AND和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(){
}
}
答案 0 :(得分:0)
如果唯一的要求是逐行打印文件,那么现有的readData()
方法就足够了,假设为创建的FileReader
对象提供了正确的文件路径。
此外,如果每行必须在4个字段中拆分,使用~
作为分隔符,则以下语句(在while
循环内)会生成每行4个字段的数组:
String[] fields = line.split("~");
可以通过String ~
方法删除行的开头或结尾或trim()
分隔符周围的空格。对于分隔符,也可以通过将split()
方法中的正则表达式增强到split("\\s*~\\s*")
来删除它们。