Tutorial 01 4,5题
.任务四:
程序设计思想:利用Math.random()产生一个char类型的字符,再利用for循环是他们相加,最后将他们放在一个消息框中输出。
程序流程图:
源程序: package test1;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
//产生一位的字符
public class Test26 extends JFrame
{
public static char Getrandomchar(char a1,char a2)
{
return (char)(a1+Math.random()*(a2-a1+1));
}
//产生6位的验证码;
public static String test()
{
String s="";
char a;
for(int i=0;i<6;i++)
{
a=Getrandomchar('a','z');
s=s+a;
}
return s;
}
public static void main(String[] args) {
//创建登录界面
final String userName = "abc";
final String passwrod = "123";
JFrame jFrame = new JFrame("登陆界面");
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
jFrame.setBounds(((int)dimension.getWidth() - 200) / 2, ((int)dimension.getHeight() - 300) / 2, 400, 200);
jFrame.setResizable(true);
jFrame.setLayout(null);
//jFrame.setForeground(Color.blue);//是背景颜色变为蓝色;
jFrame.getContentPane().setBackground(Color.blue);
//jFrame.getContentPane().setVisible(false);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//添加标签,内容为“姓名”
JLabel label1 = new JLabel("姓名");
label1.setBounds(10, 10, 100, 30);
jFrame.add(label1);
//添加标签,内容为“密码”
JLabel label2 = new JLabel("密码");
label2.setBounds(10, 40, 100, 30);
jFrame.add(label2);
//添加标签,内容为“验证码”;
JLabel label3 = new JLabel("验证码:");
label3.setBounds(10, 70, 100, 30);
//label3.setForeground(Color.red);
jFrame.add(label3);
//添加标签,并调用产生验证码的函数,并将其作为标签的内容
JLabel label4 = new JLabel(test());
String s;
s=label4.getText();
label4.setBounds(70, 75, 130, 20);
label4.setForeground(Color.red);
jFrame.add(label4);
//输入用户名;
final JTextField text1 = new JTextField();
text1.setBounds(50, 15, 130, 20);
jFrame.add(text1);
//输入密码;
final JPasswordField text2 = new JPasswordField();
text2.setBounds(50, 45, 130, 20);
jFrame.add(text2);
//输入验证码;
final JTextField text3 = new JTextField();
text3.setBounds(150, 75, 130, 20);
jFrame.add(text3);
JButton button1 = new JButton("取消");
button1.setBounds(160, 105, 150, 30);
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jFrame.dispose();//关闭程序;
}
});
jFrame.add(button1);
JButton button2 = new JButton("看不清,换一张");
button2.setBounds(300, 75, 150, 20);
button2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
text3.setText("");
label4.setText(s);
}
});
jFrame.add(button2);
//检验是否登陆成功;
JButton button = new JButton("登录");
button.setBounds(10, 105, 150, 30);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(userName.equals(text1.getText()) && passwrod.equals(text2.getText())&&s.equals(text3.getText())) {
JOptionPane.showMessageDialog(null, "登陆成功", "提示", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "错误", "提示", JOptionPane.ERROR_MESSAGE);
text1.setText("");
text2.setText("");
text3.setText("");
label4.setText(test());
}
}
});
jFrame.add(button);
jFrame.setVisible(true);
}
}
程序结果截图:
总结分析:1.在登录时,无法判断验证码是否正确。
解决方案:直接将产生验证码的程序定义为一个函数,也方便后边的调用。
2.鼠标单击“取消”是无法关闭程序
解决方案:在取消的按钮上加了一个动作监听器,如果单击“取消”,便会关闭程序。
任务五:
程序设计思想:利用Math.Random产生一个随机数(1-100),用户在从键盘输入猜的数,再利用while循环,判断是否猜的正确并给出提示信息,每次的输出结果都放在一个消息框中,直到用户猜出正确答案。
程序流程图:
程序源代码:
import java.util.Random;
import javax.swing.JOptionPane;
public class Guess {
public static void main(String[] args)
{
String q="猜大了!";
String w="猜小了";
String e="恭喜你,答对了!";
String b;
int z;
int a=new Random().nextInt(100) +1;//产生1-100的随机数;
b=JOptionPane.showInputDialog(null,"输入自己猜的数:",a);//用户输入自己猜的数字;
z = Integer.parseInt(b);//将b转化为int类型;
while(z!=a)//判断输入的数是否与产生的数相同;
{
if(z>a)
{
JOptionPane.showMessageDialog(null,q);
b=JOptionPane.showInputDialog(null,"输入自己猜的数:");//用户输入自己猜的数字;
z = Integer.parseInt(b);//将b转化为int类型;
}
else
{
JOptionPane.showMessageDialog(null,w);
b=JOptionPane.showInputDialog(null,"输入自己猜的数:");//用户输入自己猜的数字;
z = Integer.parseInt(b);//将b转化为int类型;
}
}
JOptionPane.showMessageDialog(null,e);
}
}
程序截图验证:
Tutorial 01 4,5题的更多相关文章
- [Usaco2008 Dec]Hay For Sale 购买干草[01背包水题]
Description 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包 ...
- hihoCoder #1038 : 01背包(板子题)
#1038 : 01背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励 ...
- POJ 3624 Charm Bracelet(01背包裸题)
Charm Bracelet Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 38909 Accepted: 16862 ...
- HDU 2602 Bone Collector(01背包裸题)
Bone Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU 2602 - Bone Collector - [01背包模板题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 Many years ago , in Teddy’s hometown there was a ...
- hdu 2955 Robberies (01背包好题)
Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- Jam's balance HDU - 5616 (01背包基础题)
Jim has a balance and N weights. (1≤N≤20) The balance can only tell whether things on different side ...
- HDU 2546 饭卡(01背包裸题)
饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- P1048 采药(洛谷,动态规划递推,01背包原题)
题目直接放链接 P1048 采药 这题只是01背包+背景故事而已 原题来的 PS:我写了一篇很详细的01背包说明,如果下面ac代码有看不懂的地方可以去看看 对01背包的分析与理解(图文) 下面上ac代 ...
随机推荐
- Android APK反编译就这么简单 详解
在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...
- hive单节点数据倾斜解决方法
一.现象 map/reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百 ...
- 浅谈Java中set.map.List的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
- 用 python 实现各种排序算法-乾颐堂
总结了一下常见集中排序的算法 归并排序 归并排序也称合并排序,是分治法的典型应用.分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并. 具体的归并排序就是,将一组无序数按n/2递归分解成 ...
- poi 获取excel数据 导入数据库
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, ...
- 前端福利之改变placeholder颜色的方法(转)
之前拿到一个设计图,Placeholder是白色的,所以就查看了一下改变placeholder的方法: input::-webkit-input-placeholder { /* WebKit bro ...
- vSphere5.5体系结构
1.vSphere5.5体系结构 vSphere5.5作为云集算操作系统,可以虚拟化服务器.存储.网络在内的整个IT基础架构,将这些架构转化为易于管理的虚拟化!vSphere5.5从逻辑上,可以划分为 ...
- C++编译器之间的不同性能
C++编译器之间的不同性能 编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序.一个现代编译器的主要工作流程:源代码 (source code) →预处理器 (preprocessor) → ...
- Linux Crontab 任务管理工具命令以及示例
Crontab 是 Linux 平台下的一款用于循环执行例行任务的工具,Linux 系统由 cron (crond) 这个系统服务来控制任务 , Linux系统本来就有很多的计划任务需要启动 , 所以 ...
- svn(subversion)代码管理
想必大家现在都比较喜欢使用svn(subversion)完成代码管理了,因为它的开源,轻巧,易用.但是这样一个宝贝如果不知道其正确的用法,也会让我们百思不得其解,甚至耽误项目进度,浪费程序员的心血和结 ...