java论文Word文档格式.docx
- 文档编号:4914732
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:58
- 大小:561.61KB
java论文Word文档格式.docx
《java论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《java论文Word文档格式.docx(58页珍藏版)》请在冰点文库上搜索。
有三张卡,其中两张银卡,一张黄金卡,放在把背面提供给竞猜者来猜,本节目存在三种选择方法。
方法一:
在竞猜者随机三选一后,不再改变选择的结果;
方法二:
在竞猜者随机三选一后,主持人再翻开剩下两张中没有被选中的一张银卡,竞猜者再重新在剩下的两张卡中随机选择。
方法三:
在竞猜者随机三选一后,主持人再翻开剩下两张中没有被选中的一张银卡,竞猜者改变原来的选择,选取剩下的唯一那张没有翻开的卡。
要求:
利用蒙特卡洛仿真方法比较湖南经视台猜“黄金卡”节目三种不同方法的优劣。
4内容四:
编写tic-tac-toe游戏程序。
即3*3的9个方格子,每人下一次看谁先连成一行3个。
5内容五:
设计一个记事本,菜单中要求有文件,编辑,和帮助。
文件中有新建、打开、保存和退出;
编辑中有剪切、复制和粘贴;
帮助中显示开发人和版本信息。
四、算法分析、设计与描述
1.算法分析和设计
内容一:
按设计要求实现计算器的两大功能,简单的四则运算和不同进制(八进制,十进制,十六进制)之间的相互转换。
首先进行功能的选择,若进行十进制运算,则输入数值进行四则运算并输出结果;
若进行进制转换,则先输入数值,然后进行不同的进制转换,并显示结果。
最后运算结束,退出计算器。
内容二:
建立一个FileReader文件对象、BufferedReader对象,使用readline()方法从源文件中一行一行地读取字符串数据,利用split()方法把读取的一行字符串分割成字符串数组,同时构造一个新的Scanner,从指定文件中扫描值并通过使用nextDouble()方法,使生成double型数据存入到列表contents中去。
最后通过调用List类的add(),size()等方法将数据存放到一个新的数组中,并求出每一列的综合及平均值。
内容三:
首先建立一个框架里面添加面板,接着在面板上画3*3方格形式的棋盘,根据不同选择在棋盘上画不同颜色的旗子,然后面板对于鼠标点击事件进行响应,在响应的同时做相应的逻辑判断与处理。
最后结束。
内容四:
(1)在窗体中添加菜单条、菜单定义记事本的三大功能,然后添加菜单项将每一大功能细化为具体的更小子功能,如“编辑“下的”新建“、”打开”、“保存”和“退出”。
(2)实现子功能,利用监视器对每一功能进行事件监听,通过不同的事件调用不同的事件监听函数。
(3)对事件监听函数进行定义,对相应事件做相应处理。
(4)结束监听并退出
其中“打开”事件监听算法
(1)事件初始化。
(2)建立一个打开对话框,在出现的对话框中选择要打开的文件;
(3)判断是否文件为空,为空结束该事件,重新选择;
(4)不为空则新建一个文件对象用来存放源文件内容;
(5)接着依此建立一个FileReader文件对象、BufferedReader对象从源文件中一行一行地读取数据,并存入到文件中去。
(6)读取结束并先后关闭BufferedReader、FileReader文件。
(7)事件结束。
内容五:
这里主要利用的是随机函数Math.random(),通过数学思想结合该函数的原理计算出三种猜测方法的概率。
第一种方案:
游戏需要三张卡片,即两张银卡和一张金卡,可以使用三个变量来存储三个数来分别代表三张卡片。
产生一个作为金卡的随机数,再产生一个作为第一次猜测的随机数,判断两者是否相等,若相等则猜中,若不等则相反,并根据实验次数进行不断的循环得出最后的猜中次数。
第二种方案:
同理利用产生随机数的方法,分别产生两次随机数,一个作为金卡的随机数,另一个作为第一次猜测的随机数,此时并不与金卡数比较,然后产生不等于前两次随机数的银卡数,最后产生不等于第三次产生的银卡数,若该次的随机数与金卡相等,则猜中,否则没猜中。
第三种方案:
同第一种方案判断两次产生的随机数是否相等,因为不管第一次猜中哪一张,自己只能选择剩下两张中被排除银卡后的那一张,也就是第一次猜就决定了结果,即只要第一次不相等则猜中,否则没猜中。
2.算法描述
用流程图描述如图1所示:
二、程序设计
五、程序设计
1.程序设计的基本思路
(1)实现简单的四则运算加、减、乘、除与exp()、round()和sqrt()
当进行简单数值运算时,先单击计算器面板数字按钮,再单击符号按钮,然后再单击面板上数值,最后单击等于号,计算器输出运算结果,其中按纽响应全由方法e.getSource()完成。
实现简单的加、减、乘、除功能的关键代码如下:
if(e.getSource()==jia){
qian=Double.parseDouble(text.getText());
fuhao="
+"
;
}
if(e.getSource()==jian){
-"
if(e.getSource()==cheng){
*"
if(e.getSource()==chu){
/"
当单击等于时,进行数值之间的符号选择并输出计算的值
if(e.getSource()==dengyu)
{doubleshuzhi=Double.parseDouble(text.getText());
text.setText("
"
);
if(fuhao=="
)
text.setText(qian+shuzhi+"
text.setText(qian-shuzhi+"
text.setText(qian*shuzhi+"
进行数值开方exp()、round()和sqrt()时,只需直接从Maths类中调用,sqrt()方法功能是将数值开平方、exp()方法求e的指定次幂,round()方法则是返回舍入尾数后最接近round函数中数值的整数数值。
进行这几个方法应用时,先单击计算器面板上的数值,按钮响应即用e.getSource()方法实现,再输入相应的参数,这是计算器上会直接显示输出结果。
实现exp的功能用exp(Double.parseDouble(text.getText()))从计算器上获得数值然后用sqrt()方法实,text.getText()是从计算器中获得值;
if(e.getSource()==exp)
{text.setText(Double.toString(java.lang.Math.exp(Double.parseDouble(text.getText()))));
}
同理实现round和sqrt的功能:
通过round(Double.parseDouble(text.getText()))方法和sqrt(Double.parseDouble(text.getText()))实现,然后从计算器上获得结果
(2)实现八进制、十进制、十六进制之间的相互转换
在计算器上输入想要转换的数值,当选择从十进制转换成八进制时,单击八进制的按钮时,按钮响应,然后用类Cal声明的对象change调用Cal中decOct()方法,如下:
intintoct=Integer.parseInt(oct,jin);
//转换成八进制
text.setText(change.decOct(intoct));
//调用cal中方法decOct
当从十进制转换到十六进制时,方法和十进制转换成八进制的方法相似,用change调用Cal中decHex方法。
(1)在构造类:
创建FileReader、BufferedReader并调用readline()方法从源文件中一行一行地读取字符串数据,利用split()方法把读取的一行字符串分割成字符串数组,同时构造一个新的Scanner,从指定文件中扫描值并通过使用nextDouble()方法,使生成double型数据存入到列表contents中去。
Stringline=br.readLine();
c=line.split("
"
).length;
System.out.printf("
一行有%d个数\n"
c);
Scannerscanner=newScanner(file);
while(scanner.hasNextDouble()){
contents.add(scanner.nextDouble());
}
接着是求总和及平均值:
通过调用contents.get(j)将每一行的第一列的数据加总求和,并输出结果,然后将总和除以每一行的数值个数(readline()和split("
).length方法求出)求出每一列的数值平均值。
(2)“打开”文件异常处理如下,其余同理
try{
file=newFile(filePath);
freader=newFileReader(file);
br=newBufferedReader(freader);
Stringline=br.readLine();
br.close();
}
catch(FileNotFoundExceptione){
e.printStackTrace();
System.out.println("
文件不存在"
catch(IOExceptione){
文件读取发生错误,请重新检查文件后再次执行"
}
1.通过在窗口添加标签和文本框,并添加按钮监听器ActionListener和鼠标监听器MouseListener接口来完成窗口的布局管理。
2.实现各组件响应的事件,用actionPerformed(ActionEvente)方法来定义各组件的响应事件。
其中三种方案的设计代码如下:
//第一种方案运算
r=(int)(Math.random()*3)+1;
//黄金卡数1、2、3
n1=(int)(Math.random()*3)+1;
//猜的数
if(r==n1)//猜中
//第二种方案运算
do
{
n2=(int)(Math.random()*3)+1;
while(n2==n1||n2==r);
n3=(int)(Math.random()*3)+1;
while(n3==n2);
if(n3==r)//猜的数
//第三种方案运算
if(n1!
=r)//猜中
(1)建立一个框架里面添加面板,直接显示游戏界面
sanziqi(){
JFrameframe=newJFrame("
tic-tac-toe游戏"
//建立框架
frame.getContentPane().add(newScreen());
//添加面板
classScreenextendsJComponent{};
(2)在面板上画3*3方格形式的棋盘
void画棋盘(Graphics2Dg2d)//显示棋盘
{g2d.setColor(Color.LIGHT_GRAY);
//颜色定义
g2d.fillRect(0,0,40*6,40*5);
//颜色区域
g2d.setColor(Color.BLACK);
//方格颜色
for(inti=0;
i<
4;
i++)//行格{
g2d.drawLine(40,i*40+40,160,i*40+40);
//画线条行
}
for(intk=0;
k<
k++)//列格{
g2d.drawLine(k*40+40,40,k*40+40,160);
//画线条列
(3)根据不同选择在棋盘上画不同颜色的旗子,首先确定为白棋先下,然后黑棋,依此继续。
if(旗子数目%2==0)//子数来判断谁下
void黑(){
if(pans[gby][gbx]==0){
pans[gby][gbx]=-1;
旗子数目++;
}
};
else
void白()//白棋
{
if(pans[gby][gbx]==0){
pans[gby][gbx]=1;
void画棋子(Graphics2Dg2d)//显示旗子
for(inth=0;
h<
h++){
for(intl=0;
l<
l++){
switch(pans[h][l]){
case1:
//黑棋
g2d.fillOval(40-15+l*40,40-15+h*40,30,30);
//设置所画棋子的大小
break;
case-1:
//白棋
g2d.setColor(Color.white);
g2d.fillOval(40-15+l*40,40-15+h*40,
30,30);
}}}
(4)面板对于鼠标点击事件进行响应,在响应的同时做相应的逻辑判断与处理。
当其中一个玩家出现三个同色棋子(横、竖,斜任何一个方向),程序会提示哪位用户获得胜利。
void显示赢家(Graphics2Dg2d)//显示谁赢
{
switch(winner){
//黑棋
g2d.setColor(Color.black);
g2d.drawString("
黑棋win"
100,200);
JOptionPanepane=newJOptionPane("
黑棋胜利!
!
JDialogdialog=pane.createDialog(frame,"
提示"
dialog.setVisible(true);
System.exit(0);
break;
case-1:
//白棋与黑棋类似
(5)最后结束,显示输赢后,点击“确定”退出游戏
2.程序代码
publicclassCal{
publicStringdecDec(intdecNum){//10to10
StringstrDecNum=Integer.toString(decNum);
for(inti=strDecNum.length();
3;
i++){
strDecNum="
;
}
returninvert(strDecNum);
publicStringdecHex(intdecNum){//10to16
StringstrHexNum="
intm=0;
while(decNum!
=0){
if(decNum>
15){
m=decNum%16;
decNum/=16;
else{
m=decNum;
decNum=0;
switch(m){
case15:
strHexNum+="
F"
……
case10:
A"
default:
strHexNum+=Integer.toString(m);
returninvert(strHexNum);
publicStringdecOct(intdecNum){//10to8
StringstrOctNum="
while(decNum!
if(decNum>
7){
strOctNum+=Integer.toString(decNum%8);
decNum/=8;
else{
strOctNum+=Integer.toString(decNum);
decNum=0;
returninvert(strOctNum);
//定义一个字符串倒过来的函数
privateStringinvert(Stringxx){
Stringanswer="
intlength=xx.length();
for(inti=length;
i>
0;
i--){
answer+=xx.charAt(i-1);
//使用charAt方法提取字符并将字符串倒过来
returnanswer;
}
类Calculator:
publicclassCalculatorextendsJFrameimplementsActionListener{
JFrameframe;
//定义按钮
JButtonjia=newJButton("
JButtonjian=newJButton("
……
TextFieldtext1=newTextField();
//文本区输入定义
Caljsq=newCal();
//CAL类实例化
JRadioButtonSixteenJinzhi,EightJinzhi,TenJinzhi;
//先定义一个八、十、十六进制的单选按钮
JButtonbackspace,clear;
JMenuItemabout;
JTextFieldtext;
booleanclick=true;
booleanmc=true;
doubleqian;
Stringfuhao;
intjin=10;
intfirst=1;
intm;
publicCalculator(){
setTitle("
简单计算器"
setBounds(250,200,400,320);
text=newJTextField(25);
text.setText("
0"
text.setHorizontalAlignment(JTextField.RIGHT);
JPanelpanel1=newJPanel();
JPanelpanel2=newJPanel();
JPanelpanel3=newJPanel();
ContainerMianban=getContentPane();
Mianban.add(panel1,"
North"
Mianban.add(panel2,"
Center"
Mianban.add(panel3,"
South"
SixteenJinzhi=ne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 论文