编写一个股票买卖收益计算器
设计一个股票买卖收益计算器(程序不需要图形界面),要求使用java-queue。对于股票的买入和卖出过程的解释:假设,第一天,股价是20元,买入了100股。第二天,股价是...
设计一个股票买卖收益计算器(程序不需要图形界面),要求使用java-queue。
对于股票的买入和卖出过程的解释:假设,第一天,股价是20元,买入了100股。第二天,股价是24元,买入了20股。第三天,股价是36元,买入了200股。然后,在第四天,要卖出150股在股价是30的情况下。所以计算收益时就要考虑:在第一天买了100股,第二天买了20股,第三天买了200股(但是我们从中取出30股,用前三天买的凑成第四天要卖掉的150股)。所以这里就要用到java queue的先进先出协议。
收益=100*(30-20)+20*(30-24)+30*(30-36)=940 元
编写一个queue的队列(LinkedQueue class),这个queue需要使用generic类型,因此任何类型value都可以存储。将此段代码保存在LinkedQueue.java中。(注意这个queue队列可以储存任何类型的value)
编写主程序(CapitalGain class),用于输入和输出,输入和输出的格式如下:
buy x stocks(股票) at $y each.
or
sell x stocks at $y each.
当你输入完,买了多少股票在价格为多少的时候(需要能多次买入),value存储在queue中(调用LinkedQueue class),然后再输入卖出多少股票在价格为多少的时候,最后输出收益情况。(x和y都为整数类型)将此段代码保存为CapitalGain.java.
最好能在程序每一句代码上添加注释。
谢谢了! 展开
对于股票的买入和卖出过程的解释:假设,第一天,股价是20元,买入了100股。第二天,股价是24元,买入了20股。第三天,股价是36元,买入了200股。然后,在第四天,要卖出150股在股价是30的情况下。所以计算收益时就要考虑:在第一天买了100股,第二天买了20股,第三天买了200股(但是我们从中取出30股,用前三天买的凑成第四天要卖掉的150股)。所以这里就要用到java queue的先进先出协议。
收益=100*(30-20)+20*(30-24)+30*(30-36)=940 元
编写一个queue的队列(LinkedQueue class),这个queue需要使用generic类型,因此任何类型value都可以存储。将此段代码保存在LinkedQueue.java中。(注意这个queue队列可以储存任何类型的value)
编写主程序(CapitalGain class),用于输入和输出,输入和输出的格式如下:
buy x stocks(股票) at $y each.
or
sell x stocks at $y each.
当你输入完,买了多少股票在价格为多少的时候(需要能多次买入),value存储在queue中(调用LinkedQueue class),然后再输入卖出多少股票在价格为多少的时候,最后输出收益情况。(x和y都为整数类型)将此段代码保存为CapitalGain.java.
最好能在程序每一句代码上添加注释。
谢谢了! 展开
4个回答
展开全部
股票收益即股票投资收益,是指企业或个人以购买股票的形式对外投资取得的股利,转让、出售股票取得款项高于股票帐面实际成本的差额,股权投资在被投资单位增加的净资产中所拥有的数额等。
股票收益包括股息收入、资本利得和公积金转增收益。
股票收益率是反映股票收益水平的指标
1,是反映投资者以现行价格购买股票的预期收益水平。它是年现金股利与现行市价之比率。
本期股利收益率=(年现金股利/本期股票价格)*100%
2,股票投资者持有股票的时间有长有短,股票在持有期间获得的收益率为持有期收益率。
持有期收益率=[(出售价格-购买价格)/持有年限+现金股利]/购买价格*100%
3,公司进行拆股必然导致股份增加和股价下降,正是由于拆股后股票价格要进行调整,因而拆股后的持有期收益率也随之发生变化。
股票收益包括股息收入、资本利得和公积金转增收益。
股票收益率是反映股票收益水平的指标
1,是反映投资者以现行价格购买股票的预期收益水平。它是年现金股利与现行市价之比率。
本期股利收益率=(年现金股利/本期股票价格)*100%
2,股票投资者持有股票的时间有长有短,股票在持有期间获得的收益率为持有期收益率。
持有期收益率=[(出售价格-购买价格)/持有年限+现金股利]/购买价格*100%
3,公司进行拆股必然导致股份增加和股价下降,正是由于拆股后股票价格要进行调整,因而拆股后的持有期收益率也随之发生变化。
展开全部
胜负彩09081期完全交战记录:勒沃汉堡榜首大战
本期胜负彩为“英超6+德甲7+意甲1”组合,开售时间为2009年10月14日(周三),停售时间为2009年10月17日(周六)21点。注:本期为14场胜负游戏指定派奖期。
1.阿森纳vs伯明翰
两队在历史上总共交战10场,阿森纳6胜3平1负占上风。两队在阿森纳的主场总共交战5场,阿森纳3胜2平0负占上风。两队最近1次交手2比2握手言和,当时盘口为阿森纳让一球/球半。阿森纳最近8场比赛6胜0平2负,赢盘率为50%,近6场走势:赢赢走赢赢输。最近8场比赛2胜1平5负,赢盘率为37.5%,近6场走势:输输输赢输赢。
时间 赛事 主队 比分 客队
2008-02-23 英超 伯明翰 2-2 阿森纳
2008-01-12 英超 阿森纳 1-1 伯明翰
2006-02-04 英超 伯明翰 0-2 阿森纳
2005-10-02 英超 阿森纳 1-0 伯明翰
2005-05-15 英超 伯明翰 2-1 阿森纳
更多内容查看网站
云博网站
https://www 6yun268 com/user_bwyun268/?referral=2983
本期胜负彩为“英超6+德甲7+意甲1”组合,开售时间为2009年10月14日(周三),停售时间为2009年10月17日(周六)21点。注:本期为14场胜负游戏指定派奖期。
1.阿森纳vs伯明翰
两队在历史上总共交战10场,阿森纳6胜3平1负占上风。两队在阿森纳的主场总共交战5场,阿森纳3胜2平0负占上风。两队最近1次交手2比2握手言和,当时盘口为阿森纳让一球/球半。阿森纳最近8场比赛6胜0平2负,赢盘率为50%,近6场走势:赢赢走赢赢输。最近8场比赛2胜1平5负,赢盘率为37.5%,近6场走势:输输输赢输赢。
时间 赛事 主队 比分 客队
2008-02-23 英超 伯明翰 2-2 阿森纳
2008-01-12 英超 阿森纳 1-1 伯明翰
2006-02-04 英超 伯明翰 0-2 阿森纳
2005-10-02 英超 阿森纳 1-0 伯明翰
2005-05-15 英超 伯明翰 2-1 阿森纳
更多内容查看网站
云博网站
https://www 6yun268 com/user_bwyun268/?referral=2983
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么快就课程设计了?? 呵呵 看到我以前交作业的也苦苦求代码上弄了近1个小时终于弄出来了 我简单调试了你举的那个例子 没问题 其他的你自己调试吧
import java.io.*;
import java.util.*;
public class QueueTest {
public int value;
public int num;
public QueueTest(int value, int num) {
this.value = value;
this.num = num;
}
public static void main(String args[]) {
Queue list = new LinkedList();
InputStreamReader isr = null;
BufferedReader br = null; //从命令行读取数据用的
try {
while(true) {
System.out.println("1 买股票");
System.out.println("2 卖股票");
System.out.println("3 退出");
isr = new InputStreamReader(System.in);
br = new BufferedReader(isr);
int i = -1;
int value = 0;
int num = 0;
try {
i = Integer.parseInt(br.readLine()); //读取命令操作代号
} catch(NumberFormatException ne) {
System.out.println("输入错误");
}
if(i == 1) {
System.out.println("请输入股价");
isr = new InputStreamReader(System.in);
br = new BufferedReader(isr);
try {
value = Integer.parseInt(br.readLine());
} catch(NumberFormatException ne) {
System.out.println("输入错误");
continue; //读取所输入股价 股票数目
}
System.out.println("请输入买入数目");
isr = new InputStreamReader(System.in);
br = new BufferedReader(isr);
try {
num = Integer.parseInt(br.readLine());
} catch(NumberFormatException ne) {
System.out.println("输入错误");
continue;
}
list.add(new QueueTest(value, num)); //向队列中加入购股记录
} else if(i == 2) {
int income = 0;
System.out.println("请输入股价");
isr = new InputStreamReader(System.in);
br = new BufferedReader(isr);
try {
value = Integer.parseInt(br.readLine());
} catch(NumberFormatException ne) {
System.out.println("输入错误");
continue;
}
System.out.println("请输入卖出数目");
isr = new InputStreamReader(System.in);
br = new BufferedReader(isr);
try {
num = Integer.parseInt(br.readLine());
} catch(NumberFormatException ne) {
System.out.println("输入错误"); //与上同
continue;
}
while (list.peek() != null) {
QueueTest t = (QueueTest)list.peek();
if(t.num > num) {
t.num -= num;
income += num * (value - t.value);
System.out.println("收益是:" + income);
break; //当购股记录股数大于卖出剩余量时,添加收益,退出队列访问
} else {
num -= t.num;
income += t.num * (value - t.value);
list.poll(); //当购股记录股数大于卖出剩余量时,添加收益,继续访问
}
}
if (list.peek() == null) { //现存股总数小于卖出数,将存货全卖出,输出还需要但没卖出的股数以及收益
System.out.println("已将剩余全部股票卖出,还缺少卖出股票数目:" + num);
System.out.println("收益是:" + income);
}
} else if(i == 3) {
return;
} else {
System.out.println("输入错误");
}
}
} catch(IOException e) {
e.printStackTrace();
} finally {
try {
if(br != null) br.close();
if(isr != null) isr.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
import java.io.*;
import java.util.*;
public class QueueTest {
public int value;
public int num;
public QueueTest(int value, int num) {
this.value = value;
this.num = num;
}
public static void main(String args[]) {
Queue list = new LinkedList();
InputStreamReader isr = null;
BufferedReader br = null; //从命令行读取数据用的
try {
while(true) {
System.out.println("1 买股票");
System.out.println("2 卖股票");
System.out.println("3 退出");
isr = new InputStreamReader(System.in);
br = new BufferedReader(isr);
int i = -1;
int value = 0;
int num = 0;
try {
i = Integer.parseInt(br.readLine()); //读取命令操作代号
} catch(NumberFormatException ne) {
System.out.println("输入错误");
}
if(i == 1) {
System.out.println("请输入股价");
isr = new InputStreamReader(System.in);
br = new BufferedReader(isr);
try {
value = Integer.parseInt(br.readLine());
} catch(NumberFormatException ne) {
System.out.println("输入错误");
continue; //读取所输入股价 股票数目
}
System.out.println("请输入买入数目");
isr = new InputStreamReader(System.in);
br = new BufferedReader(isr);
try {
num = Integer.parseInt(br.readLine());
} catch(NumberFormatException ne) {
System.out.println("输入错误");
continue;
}
list.add(new QueueTest(value, num)); //向队列中加入购股记录
} else if(i == 2) {
int income = 0;
System.out.println("请输入股价");
isr = new InputStreamReader(System.in);
br = new BufferedReader(isr);
try {
value = Integer.parseInt(br.readLine());
} catch(NumberFormatException ne) {
System.out.println("输入错误");
continue;
}
System.out.println("请输入卖出数目");
isr = new InputStreamReader(System.in);
br = new BufferedReader(isr);
try {
num = Integer.parseInt(br.readLine());
} catch(NumberFormatException ne) {
System.out.println("输入错误"); //与上同
continue;
}
while (list.peek() != null) {
QueueTest t = (QueueTest)list.peek();
if(t.num > num) {
t.num -= num;
income += num * (value - t.value);
System.out.println("收益是:" + income);
break; //当购股记录股数大于卖出剩余量时,添加收益,退出队列访问
} else {
num -= t.num;
income += t.num * (value - t.value);
list.poll(); //当购股记录股数大于卖出剩余量时,添加收益,继续访问
}
}
if (list.peek() == null) { //现存股总数小于卖出数,将存货全卖出,输出还需要但没卖出的股数以及收益
System.out.println("已将剩余全部股票卖出,还缺少卖出股票数目:" + num);
System.out.println("收益是:" + income);
}
} else if(i == 3) {
return;
} else {
System.out.println("输入错误");
}
}
} catch(IOException e) {
e.printStackTrace();
} finally {
try {
if(br != null) br.close();
if(isr != null) isr.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询