for (int n = 2 n <= 100 n++)
{
// 循环相除2-自身一半的数
for (int i = 2 i <= n/2 i++)
{
// 如果找到一个数能整除,则为合数
if (n % i == 0)
{
System.out.println(n)
// 跳出循环
break
}
}
}
package com.erayt.ctms.Zimportimport java.io.FileInputStream
import java.io.IOException
import java.io.InputStream
import java.lang.reflect.Field
import java.util.ArrayList
import java.util.HashMap
import java.util.Iterator
import java.util.List
import org.apache.commons.collections.functors.ForClosure
import org.apache.poi.hssf.usermodel.HSSFCell
import org.apache.poi.hssf.usermodel.HSSFWorkbook
import org.apache.poi.ss.usermodel.Cell
import org.apache.poi.ss.usermodel.Row
import org.apache.poi.ss.usermodel.Sheet
import org.apache.poi.ss.usermodel.Workbook
import org.apache.poi.xssf.usermodel.XSSFWorkbook
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import com.alibaba.fastjson.JSONArray
import com.alibaba.fastjson.JSONObject
import com.erayt.ctms.system.standard.xnet.CtmsXNetContext
import com.erayt.xnet4j.XNetCommand
import com.erayt.xnet4j.XNetData
public class ReadForwardExcelServiceImpl implements ReadForwardExcelService {
private SearchPosDao searchForwardDao
public SearchPosDao getSearchForwardDao() {
return searchForwardDao
}
public void setSearchForwardDao(SearchPosDao searchForwardDao) {
this.searchForwardDao = searchForwardDao
}
protected Logger logger = LoggerFactory
.getLogger(this.getClass().getName())
private Workbook wb
//private JSONObject jsonObject = new JSONObject()
private List<Object>list_key = new ArrayList<Object>()
private List<Object>list_body = new ArrayList<Object>()
private List<HashMap<String,Object>>list_map = new ArrayList<HashMap<String,Object>>()
private CtmsXNetContext ctmsXNetContext
private String filename3
public String getFilename3() {
return filename3
}
public void setFilename3(String filename3) {
this.filename3 = filename3
}
public String getFilename4() {
return filename4
}
public void setFilename4(String filename4) {
this.filename4 = filename4
}
private String filename4
public void setCtmsXNetContext(CtmsXNetContext ctmsXNetContext) {
this.ctmsXNetContext = ctmsXNetContext
}
public void init() {
readXml(filename3)
}
public void readXml(String fileName) {
try {
InputStream input = new FileInputStream(fileName)// 建立输入流
// 根据文件格式2003来初始化
wb = new HSSFWorkbook(input)
Sheet sheet = wb.getSheetAt(0)// 获得第一个表单
Iterator<Row>rows = sheet.rowIterator()// 获得第一个表单的迭代器
for(int i=0i<sheet.getPhysicalNumberOfRows()i++) {
Row row = rows.next()// 获得行数据
//System.out.println(sheet.getPhysicalNumberOfRows()+"+++++")
Iterator<Cell>cells = row.cellIterator()// 获得第i行的迭代器
HashMap<String, String>HashBegain=new HashMap<String, String>()
for(int j=0j<row.getPhysicalNumberOfCells()j++){
//System.out.println(row.getPhysicalNumberOfCells()+"+++++"+j)
Cell cell = cells.next()
if(i==0||i==7){
list_key.add(cell.getStringCellValue())
}else {
if(cell.getCellType()== cell.CELL_TYPE_NUMERIC){
HashBegain.put((String) list_key.get(j), String.valueOf(cell.getNumericCellValue()))
}
else{HashBegain.put((String) list_key.get(j), cell.getStringCellValue())}
}
}
if(i!=0&&i!=7){
list_body.add(HashBegain)
}
if(i==6){
list_key = new ArrayList<Object>()
}
}
installJson()
readExcelEqual()
} catch (IOException ex) {
ex.printStackTrace()
}
}
// 组装即期交易json报文,并发送
public void installJson() {
String headStr = "{Head:" + "{\"chanelNo\":1508170004977,"
+ "\"dataCount\":\"1\"," + "\"eventType\":\"1\","
+ "\"msgNo\":\"1508170004977-20150917171754\","
+ "\"msgType\":\"1\"," + "\"sendingTime\":\"20150917171754\","
+ "\"source\":\"TR1\"," + "\"subSource\":\"TR1\","
+ "\"version\":\"1.0\"}," + "Body:"
+ JSONArray.toJSONString(list_body).replaceAll("\"", "'") + "}"
System.out.println(headStr)
try {
Thread.sleep(5000)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
sendXNetTradeData(headStr, "RK1IN.Trade", "UTF-8")
}
// 发送到xnetd
public void sendXNetTradeData(String sendJson, String title, String charset) {
XNetData xnetData = new XNetData()
xnetData.setData(sendJson, charset)
xnetData.setTitle(title)
xnetData.setCommand(XNetCommand.TITLE)
if (ctmsXNetContext.getCtmsXnetSocket().isLoginOK()) {
ctmsXNetContext.getCtmsXnetSocket().sendData(xnetData)
} else {
logger.warn("CtmsXnet no login. sendXNetData[" + title
+ "] return.")
}
}
// 打印json属性
public static void printClassInfo(Object object) {
Field[] fields = object.getClass().getDeclaredFields()
for (int i = 0i <fields.lengthi++) {
try {
boolean accessFlag = fields[i].isAccessible()
fields[i].setAccessible(true)
String varName = fields[i].getName()
Object varValue = fields[i].get(object)
System.out.println(varName + "=" + varValue)
fields[i].setAccessible(accessFlag)
} catch (Exception e) {
e.printStackTrace()
}
}
}
//获取excel结果数据,并进行比较
public void readExcelEqual() {
//读取excel头寸数据
HashMap<String, String>HashEnd=new HashMap<String, String>()
Workbook wb1
List<Object>list_keyBody = new ArrayList<Object>()
List<HashMap>list_keyBody2 = new ArrayList<HashMap>()
//List<HashMap<String,Object>>list_keyBody2 = new ArrayList<HashMap<String,Object>>()
boolean END=false
try {
InputStream input = new FileInputStream(filename4)// 建立输入流
wb1 = new HSSFWorkbook(input)
Sheet sheet = wb1.getSheetAt(0)// 获得第一个表单
Iterator<Row>rows = sheet.rowIterator()// 获得第一个表单的迭代器
int i = 0
while (rows.hasNext()) {
HashEnd=new HashMap<String, String>()
Row row = rows.next()// 获得行数据
for (int j = 0j <row.getLastCellNum()j++) {
//System.out.println(row.getLastCellNum()+"XXXXX")
Cell cell = row.getCell(j)
if(i==0){
list_keyBody.add(cell.getStringCellValue())
}else{
if(cell.getCellType()==cell.CELL_TYPE_NUMERIC){
HashEnd.put((String) list_keyBody.get(j), String.valueOf(cell.getNumericCellValue()))
}
else
{
HashEnd.put((String) list_keyBody.get(j), cell.getStringCellValue())
}
}
}
if(i!=0){
list_keyBody2.add(HashEnd)}
i++
}
} catch (IOException ex) {
ex.printStackTrace()
}
//从数据库获取头寸数据
try {
Thread.sleep(10000)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
list_map=searchForwardDao.findForwardPos()
//输出计算正确与否
for(int k=0k<list_map.size()k++){
if(END=list_map.get(k).get("AMOUNT_1").toString().equals((String) list_keyBody2.get(k).get("AMOUNT_1")))
{
logger.debug("远期第"+k+"组 货币1金额计算正确"+" Amount1="+list_map.get(k).get("AMOUNT_1").toString())
}else {
logger.debug("远期第"+k+"组 货币1金额计算不正确"+"left="+list_map.get(k).get("AMOUNT_1").toString()+" right="+list_keyBody2.get(k).get("AMOUNT_1"))
}
if(END=list_map.get(k).get("AMOUNT_2").toString().equals((String) list_keyBody2.get(k).get("AMOUNT_2")))
{
logger.debug("远期第"+k+"组 货币2金额计算正确"+" Amount2="+list_map.get(k).get("AMOUNT_2").toString())
}else {
logger.debug("远期第"+k+"组 货币2金额计算不正确"+"left="+list_map.get(k).get("AMOUNT_2").toString()+" right="+list_keyBody2.get(k).get("AMOUNT_2"))
}
if(END=list_map.get(k).get("START_PL").toString().equals((String) list_keyBody2.get(k).get("START_PL")))
{
logger.debug("远期第"+k+"组 累计损益计算正确"+" START_PL="+list_map.get(k).get("START_PL").toString())
}else {
logger.debug("远期第"+k+"组 累计损益计算不正确"+"left="+list_map.get(k).get("START_PL").toString()+" right="+list_keyBody2.get(k).get("START_PL"))
}
if(END=list_map.get(k).get("DAILY_PL").toString().equals((String) list_keyBody2.get(k).get("DAILY_PL")))
{
logger.debug("远期第"+k+"组 日止损计算正确"+" DAILY_PL="+list_map.get(k).get("DAILY_PL").toString())
}else {
logger.debug("远期第"+k+"组 日止损计算不正确"+"left="+list_map.get(k).get("DAILY_PL").toString()+" right="+list_keyBody2.get(k).get("DAILY_PL"))
}
}
}
}
int sum=1错了。整型的最大值为2的32次。而1*2*3...*100=?远远超过这个值了,所以sum肯定溢出了。
可以是用大整数BigInteger 数值类型来存储结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)