JAVA HW2
MODEL
//yuec2 Yue Cheng
package hw2; import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Scanner; import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableMap; public class Model extends DataFiler{
ObservableMap<StringProperty, Product> productsMap = FXCollections.observableHashMap();
static ObservableMap<StringProperty, Nutrient> nutrientsMap = FXCollections.observableHashMap();
Product[] products;
Nutrient[] nutrients; public void readProducts(String productFile) {
// TODO Auto-generated method stub
//initialize two Scanner
//Scanner fileScanner is used to count the number of lines in file
Scanner fileScanner = null;
//Scanner sc is used to read information into the products array
Scanner sc = null;
//fileContent is used to store all the information for this array
StringBuilder fileContent = new StringBuilder(); try {
File file = new File(productFile);
fileScanner = new Scanner(file);
sc = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int countOfLines = 0; //skip the title line
fileScanner.nextLine();
while (fileScanner.hasNextLine()) {
//add all the information into the fileContent
fileContent.append(fileScanner.nextLine());
//get countOfLines by using fileScanner
countOfLines++; }
//initialize a Product array using the countOfLines as size
products = new Product[countOfLines]; //skip the title line
sc.nextLine();
for (int i = 0; i < countOfLines; i++) {
//put every line's product information into a String array temp
String[] temp = sc.nextLine().toString().split("\",\"");
//get information from the temp array and assign as each product's information
products[i] = new Product();
//StringProperty is not a string?
products[i].ndbNumber.set(temp[0]+'"');
products[i].productName.set(temp[1].trim());
products[i].ingredients.set(temp[7].trim());
products[i].manufacturer.set(temp[4].trim());
productsMap.put(products[i].ndbNumber, products[i]);
}
} public void readNutrients(String nutrientFile) {
//initialize 2 Scanner
//Scanner fileScanner is used to count the number of lines in file
Scanner fileScanner = null;
//Scanner sc is used to read information into the nutrients array
Scanner sc = null;
//StringBuilder contentOfUniqueNutrients is used to store information of the unique nutrients
StringBuilder contentOfUniqueNutrients = new StringBuilder();
//fileContent is used to store all the information for this array
StringBuilder fileContent = new StringBuilder(); try {
File file = new File(nutrientFile);
fileScanner = new Scanner(file);
sc = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//skip the title line
fileScanner.nextLine();
//initialize the count numbers
int countOfLines = 0;
int numOfUniqueNutirents = 0; while (fileScanner.hasNextLine()) {
//get one line's information into the String cur
String cur = fileScanner.nextLine();
//extract the nutrients's id to identify each unique nutrient
String id = cur.split("\",\"")[1];
//add all the information into the fileContent
fileContent.append(cur);
//get countOfLines by using fileScanner
countOfLines++; if (!contentOfUniqueNutrients.toString().contains(id)) {
//if the id is unique, append this nutrient's information
contentOfUniqueNutrients.append(cur);
//split each line by \n
contentOfUniqueNutrients.append("\n");
//count the number for unique nutrients
numOfUniqueNutirents++;
}
} //skip the title line
sc.nextLine();
//initialize an array using the numOfUniqueNutirents as size
nutrients = new Nutrient[numOfUniqueNutirents];
//store each line's information into a string array
String[] lines = contentOfUniqueNutrients.toString().split("\n", -1);
for (int i = 0; i < numOfUniqueNutirents; i++) {
//split each array's elements
String[] temp1 = lines[i].toString().split("\",", -1);
//assign each element's information
nutrients[i] = new Nutrient();
nutrients[i].nutrientCode.set(temp1[1].replaceAll("\"", "").trim());
nutrients[i].nutrientName.set(temp1[2].replaceAll("\"", "").trim());
nutrients[i].nutrientUom.set(temp1[5].replaceAll("\"", "").trim());
nutrientsMap.put(nutrients[i].nutrientCode, nutrients[i]);
}
} public void readServingSizes(String servingSizeFile) {
//initialize two Scanner
//Scanner fileScanner is used to count the number of lines in file
Scanner fileScanner = null;
//Scanner sc is used to read information into the products array
Scanner sc = null;
//add all the information into the fileContent
StringBuilder fileContent = new StringBuilder(); try {
File file = new File(servingSizeFile);
fileScanner = new Scanner(file);
sc = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
} int countOfLines = 0;
//get countOfLines
fileScanner.nextLine();
while (fileScanner.hasNextLine()) {
fileContent.append(fileScanner.nextLine());
countOfLines++;
} //count the number of words of each line of serving size file
int lengthOfServingSizeFile = sc.nextLine().toString().split("\",\"").length;
//initialize an array using the lengthOfServingSizeFile as size
String[] temp = new String[lengthOfServingSizeFile]; for (int i = 0; i < countOfLines; i++) {
//split each array's elements
temp = sc.nextLine().toString().split("\",\"");
//assign each element's information
products[i] = new Product();
products[i].servingSize.set(Float.parseFloat(temp[1].trim()));
products[i].servingUom.set(temp[2].trim());
products[i].householdSize.set(Float.parseFloat(temp[3].trim()));
products[i].householdUom.set(temp[4].trim());
productsMap.put(products[i].ndbNumber, products[i]);
}
} @Override
public void writeFile(String filename) {
// TODO Auto-generated method stub } @Override
public boolean readFile(String filename) {
// TODO Auto-generated method stub
//how to judge the file?
CSVFiler cf = new CSVFiler();
XMLFiler xf = new XMLFiler();
if (filename.contains("csv")) cf.readFile(filename);
if (filename.contains("xml")) xf.readFile(filename);
return false;
} }
CSVFiler
package hw2; import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner; public class CSVFiler extends DataFiler{ @Override
public void writeFile(String filename) {
// TODO Auto-generated method stub
//no code in this version
} @Override
public boolean readFile(String filename) {
// TODO Auto-generated method stub
Scanner sc = null;
//add all the information into the fileContent
StringBuilder fileContent = new StringBuilder(); try {
File file = new File("Profile1.csv");
sc = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
fileContent.append(sc.nextLine()); String[] temp = fileContent.toString().split("\",\"");
//Female(float age, float weight, float height, float physicalActivityLevel, String ingredientsToAvoid) {
Female female = new Female(Float.valueOf(temp[1]), Float.valueOf(temp[2]),
Float.valueOf(temp[3]), Float.valueOf(temp[4]),temp[5]);
Person p = female;
//how to judge correct or not? return false;
} }
最后一段改的CSVFiler
public
boolean readFile(String filename) {
CSVFormat csvFormat = CSVFormat.DEFAULT.withFirstRecordAsHeader(); try {
CSVParser csvParser = CSVParser.parse(new FileReader(filename), csvFormat); for (CSVRecord csvRecord : csvParser) {
Person person = new Person(csvRecord.get(1), csvRecord.get(2), csvRecord.get(3), csvRecord.get(4), csvRecord.get(5));
} }
catch (FileNotFoundException e1) { e1.printStackTrace(); return false;}
catch (IOException e1) { e1.printStackTrace(); return false;} return true;}
JAVA HW2的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- java返回一个简单的日历
import java.text.*; //首先得导包 import java.util.*; public class hw2 { /** * 计算日期差 返回的天数 * @param dstr1 ...
- Java Gradle入门指南之简介、安装与任务管理
这是一篇Java Gradle入门级的随笔,主要介绍Gradle的安装与基本语法,这些内容是理解和创建build.gradle的基础,关于Gradle各种插件的使用将会在其他随笔中介绍. ...
- JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo
OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...
- java的nio之:java的nio的服务器实现模型
[nio服务端序列图]
- Java相关错误
http://blog.csdn.net/pipisorry/article/details/51291063 使用hadoop jar ./Hw2Part1.jar /hw2/example-inp ...
- java 中什么是aop
AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入 ...
- 【转】Java Spring AOP详解
一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址:http://www.cnbl ...
- JAVA总结--Spring框架全解
一.Spring简介 Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring 框架目标是简化Java企业 ...
随机推荐
- 笨方法学python 22,前期知识点总结
对笨方法学python,前22讲自己的模糊的单词.函数进行梳理总结如下: 单词.函数 含义 print() 打印内容到屏幕 IDLE 是一个纯Python下自带的简洁的集成开发环境 variable ...
- 微服务-springcloud
感觉微服务都差不多概念,最近稍微看了下springcloud,感觉入门还是很简单的,框架用用就那么回事,深入的话需要很多时间投入了 学一个东西,我推荐首先从概念上了解到他是做什么的,什么时候需要,基本 ...
- datetime is not json serializable
python, datetime is not json serializable import datetime def json_serial(obj): """JS ...
- Win7下npm命令Error: ENOENT问题解决
Win7下在执行npm命令,比如npm list时出现下面错误:
- PRC远程过程调用
RPC(Remote Promote Call) 一种进程间通信方式.允许像调用本地服务一样调用远程服务. RPC框架的主要目标就是让远程服务调用更简单.透明.RPC框架负责屏蔽底层的传输方式(TCP ...
- k8s的Deployment 滚动升级
首先定义一个Deployment,并创建它 apiVersion: apps/v1beta1 kind: Deployment metadata: name: house-live spec: rep ...
- [Linux]CentOS7搭建Nginx + MySQL + PHP
------------------------------------------------------------------------------------- Nginx安装参考地址:ht ...
- MySQL系统变量配置基础
本文出处:http://www.cnblogs.com/wy123/p/6595556.html MySQL变量的概念 个人认为可以理解成MySQL在启动或者运行过程中读取的一些参数问题,利用这些参数 ...
- delphi 原创应用工具箱
用到的主要知识点: (1) listview背景透明 (2) 读取应用图标 (3)图标透明 (4)实时显示微软必应首页图,裁剪图片等
- ubuntu上装MySQL遇到的问题及解决办法
验证原有主机上是否已安装mysql 运行sudo netstat -tap | grep mysql命令查看是否有Mysql的端口 查看到mysql已安装上了: 启动my ...