📄 81.txt
字号:
猜数游戏程序
一.设计目标:
程序运行时自动产生1~100的随机数、接收用户键盘输入数据并给出提示信息,直至猜对。游戏者猜对后,显示猜测次数,并提供“重新开始”和退出功能。
二.编程思路:
1) 采用两层循环结构实现所需功能。外层采用do-while循环,因此至少要运行一次,由循环条件控制是否重新开始。内层采用for(int i=0; ;i++)格式的for循环,用于判断游戏者的每次输入,其循环计数器i也记录了游戏者的猜测次数。
2) 在外层循环的开始,采用Math类的random()方法产生随机数,并变换到取值区间[1,100]。
3) 在内层循环中使用BufferedReader类的readLine()方法读取键盘输入,得到的是String类型数据,再使用封装类Integer的parseInt()方法转换为int型。
4) 游戏者猜对后,内层循环结束。再在外层循环中要求其输入是否继续的信息,如“y”或“n”,决定是否重新开始外层循环。
三.编码实现:
程序:Guess.java
import java.io.*;
public class Guess{
public static void main(String args[]){
int m,n=0;
String s;
boolean again = false;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
do{
m=(int)(Math.random()*101);
System.out.println("请输入数值(1-100)");
for(int i=0; ;i++){
try{
s = br.readLine();
n = Integer.parseInt(s);
}catch(IOException e){
e.printStackTrace();
}
if(n>m){
System.out.println("偏大了,请继续:");
continue;
}else if(n<m){
System.out.println("偏小了,请继续:");
continue;
}else {
System.out.println("恭喜!"+ (i+1) + "次猜对!");
break;
}
}
try{
//
文本文件阅读器开发
一.设计目标:
1) 文本文件阅读器是一个菜单驱动的简单AWT应用。
2) 文本文件阅读器包含一个“文件”菜单,文件菜单包含两个菜单项:
“打开”菜单用来打开文本文件。
“退出”菜单用于退出程序。
3) 文本文件阅读器可以在多种平台上运行。
二.初步设计:
文本文件阅读器的初步设计分为两部分:
2 GUI设计——了解并选用构成程序的各个GUI部件。
2 伪代码设计——用自然语言写出程序运行原理。
l GUI设计
文本文件阅读器的用户界面包含一个主窗口、一个菜单和一个打开文件的对话框。首先我们来看看主窗口的设计。主窗口应该把窗口标题显示为“文件名--FileReader1.0”,显示“文件”菜单,窗体为文本文件内容显示区,刚启动时为空白状态,文件名为“untitled--FileReader1.0”。
“文件”菜单包含两个菜单项。“打开”菜单显示一个文件对话框,用来选择文本文件的位置及文件名称。“退出”菜单关闭程序。另外,点击主窗口右上角的关闭按钮也可以关闭程序。文本文件阅读器窗体的主体部分为TextArea组件,用以显示文本文件内容,见图1:
****************
图1 文本文件阅读器主界面
l 伪代码设计
前面我们了解了构成文本文件阅读器GUI的各个部件,下面要开始“设想”一下这个程序的具体构造。在正式编写代码之前,我们先用伪代码的形式写出这个程序的运行过程,以后正式编写代码时只需把伪代码翻译成Java代码即可。下面给出了文本文件阅读器的伪代码描述:
1) 应用程序类名称:FileReader
2) 用到的主awt组件:Frame,Menubar,Menu,MenuItem,TextField
3) 监听器分类:菜单事件监听器(ActionListener),窗口事件监听器(WindowListener)
4) main方法:
(1) 创建并显示主窗口----调用FileReader构造方法完成有关初始化工作。
(2) 结束主程序线程。此时AWT线程继续运行。
5) FileReader构造方法:
(1) 创建主窗口
(2) 设置主窗口的标题
(3) 创建一个菜单条(MenuBar)
(4) 创建“文件”菜单
(5) 创建“打开”菜单项
(6) 创建“退出”菜单项
(7) 把“打开”菜单项加入“文件”菜单。
(8) 在“文件”菜单中加入一条水平分隔线
(9) 把“退出”菜单项加入“文件”菜单。
(10) 把FileReader对象注册成为“打开”和“退出”菜单项的ActionEvent事件监听器
(11) 把“文件”菜单加入到菜单条
(12) 把新创建的菜单条设置为主窗口的菜单条
(13) 创建“文本域”组件并添加到主窗体中
(14) 注册窗口监听器,以处理窗口关闭事件
(15) 把主窗口的大小设置为400*400像素
(16) 显示主窗口
(17) 构造方法结束
6) 菜单事件处理方法:
当所监听的组件出现动作时,调用相应的监听器方法:
2 如果动作事件起源于“退出”菜单项:
(1) 退出当前程序
(2) 返回
2 如果动作事件起源于“打开文件”菜单项
(1) 创建一个“打开文本文件”对话框
(2) 把对话框的当前目录设置为当前目录
(3) 显示对话框。这个对话框是一个模式对话框
(4) 如果用户没有通过对话框选择文本文件则返回;如果用户通过对话框选择了文件,则进行如下操作:
- 获取选中的文件路径及文件名称
- 将主窗口标题改为“文件名--FileReader1.0”
- 读取文件内容并显示到主窗体“文本域”组件中
- 返回
7) 窗口事件监听器处理方法:
当所监听的组件出现动作时,调用相应的监听器方法,如果动作事件起源于“关闭窗口”角标,则退出当前程序
三.编码实现:
把前面的伪代码转换成Java代码:
程序:FileReader.java
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class MyReader implements ActionListener{
private Frame f;
private TextArea ta;
FileDialog fd ;
public MyReader() {
f = new Frame("FileReader");
MenuBar mb = new MenuBar();
Menu m1 = new Menu("文件");
MenuItem m11 = new MenuItem("打开");
MenuItem m12 = new MenuItem("退出");
m11.setActionCommand("open");
m12.setActionCommand("exit");
m11.addActionListener(this);
m12.addActionListener(this);
m1.add(m11);
m1.addSeparator();
m1.add(m12);
mb.add(m1);
f.setMenuBar(mb);
ta = new TextArea();
f.add(ta);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(1);
}
});
f.setSize(400,400);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e){
String s = e.getActionCommand();
if (s.equals("open")) {
fd=new FileDialog(f,"文件对话框", FileDialog.LOAD);
fd.setVisible(true);
String fpath = fd.getDirectory();
String fname = fd.getFile();
String file = fpath + fname;
this.outputFile(file);
}else if(s.equals("exit")){
System.exit(1);
}
}
public void outputFile(String file){
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String d = br.readLine();
while(d!=null){
ta.append(d); //在ta原文本的结尾追加,而非覆盖
ta.append("\n");//输出一个换行符
d = br.readLine();
}
br.close();
f.setTitle(file);
}catch (FileNotFoundException e1){
e1.printStackTrace();
}catch (IOException e2){
e2.printStackTrace();
}
}
public static void main(String args[]) {
new MyReader();
}
}
程序运行效果如图2所示:
图2 文本文件阅读器显示效果
练习:
通过使用菜单,文件对话框等组件扩充阅读器的功能,如“新建”、“保存”、“另存为”等文件操作;“剪切”、“复制”、“粘贴”等编辑操作;鼠标右键菜单和状态条功能;最近打开过的文件列表功能等。直至使之成为一个类似于Windows notePade的文本编辑器。
Ex:
1. (homework)参照j21_编程思想训练02,写出先前作业《07_多线程显示不同时区时间》的设计文档,包括:
a. 设计目标(需求分析)
b. 编程思路
c. 初步设计:GUI设计/伪代码设计
d. 源代码(编码实现)
2. 参照j21_编程思想训练02,写出先前作业《06_标准计算器设计与实现》的设计文档,包括:
a. 设计目标(需求分析)
b. 编程思路
c. 初步设计:GUI设计/伪代码设计
d. 源代码(编码实现)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -