[实验任务四]:

在上网时,我们经常会看到以下这种对话框,要用户输入一个验证码。

1.程序设计思想

先利用Math.random()得到一个整数,然后将其类型转换为字符类型,连接起来生成六位验证字符串,输入验证码(对话框)利用toLowerCase()函数将输入的字符皆转为小写字母,然后利用Equal函数判断输入的预生成验证码是否吻合,然后以消息框输出信息即可。

2.程序流程图

3.源程序

 import java.util.Random;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Test6 {
     public static void main(String[] args) {
        String s2;
        boolean b=true;
        while(b){
         //定义一个空字符串
     String result = "";
     //进行6次循环
     for(int i = 0 ; i < 6 ; i ++)
     {
     //生成一个97~122的int型的整数
     int intVal = (int)(Math.random() * 26 + 97);
     //将intValue强制转换为char后连接到result后面
     result = result + (char)intVal;
     }
            s2=JOptionPane.showInputDialog( "请输入验证码(不区分大小写)"+result);
            s2=s2.toLowerCase();//把用户输入的大写字母改为小写
        if(s2.equals(result)){
          JOptionPane.showMessageDialog(
               null, " 登录成功 ", "Results",
               JOptionPane.PLAIN_MESSAGE );
            b=false;
        }else{
          JOptionPane.showMessageDialog(
               null, "登录失败,请重新输入", "Results",
               JOptionPane.PLAIN_MESSAGE );
        }
        }
    }
}

4.实现结果截图

5.实验总结

获得字符串的方法值得学习,学会了如何将输入的字母直接转为小写字母,然后利用equal函数作比较,其实java中包类函数多种多样,适合由浅入深的理解。

[实验任务五]:(选做)

猜数字游戏。

1.程序设计思想

对猜数字进行了一定改良,在规定的时间里猜出正确的数字。利用Random类包,先将一个1-100的任意数字赋给a,起初以对话框形式读取设置时间,然后输出开始游戏(消息框)用System.currentTimeMillis()读取当前系统时间,接收输入的数字(对话框),以System.currentTimeMillis()与最初系统时间的差值(即消耗时间)与设置时间比较结果,决定是否结束游戏,其中设有p变量,用以判断最终结果。高低提示(输入数字与系统随机数a的比较,有一判断用以循环输入所猜数字)。

2.程序流程图

3.源程序

import java.util.Random;
import javax.swing.JOptionPane;
public class Guess_Number {
public static void main(String[] args) {
Random random = new Random();
int a=1+(int)(Math.random()*100);//系统给的随机数在1-100
    String s2=JOptionPane.showInputDialog( "输入设置时间" );
    long tt=Long.parseLong(s2);//因为系统时间是long型,所以为了方便比较,所以设为long型
    String firstNumber,s1;
    int p=0;//结果判断
    JOptionPane.showMessageDialog(null, "开始游戏" );  
    final long t=System.currentTimeMillis();//起初时间
    firstNumber =JOptionPane.showInputDialog( "请输出你猜的数字:" );
       int number1= Integer.parseInt( firstNumber );
    while((System.currentTimeMillis()-t)/1000<tt)//游戏结束判断
     {  
    
      if(number1<a)
      {
      JOptionPane.showMessageDialog(null, "低了" );
           
      }
      if(number1>a)
      {
      JOptionPane.showMessageDialog(null, "高了" );
      }
      if(number1==a)
      { JOptionPane.showMessageDialog(null, "恭喜!猜对了" );p=1;break;}
         if(p!=1)//循环输入 猜的数字
          {
           s1=JOptionPane.showInputDialog( "Enter number" );
           number1= Integer.parseInt( s1 );
          }
     }  
    if(p==0)//结果输出
   JOptionPane.showMessageDialog(null, "很遗憾,未能在规定时间猜出数字" );  
}
 
}

4.实现结果截图

5.实验总结

对话框的循环刚开始并没有真正理解,没有形成循环的思维,所以在这一点上花费时间比较多,对字符化界面的理解还不够深刻,希望自己以后能够多做有关方面的例子,加深理解。但是了解了关于java中一种计时器的方法(获取系统时间)。

实验4&5的更多相关文章

  1. [原] 利用 OVS 建立 VxLAN 虚拟网络实验

    OVS 配置 VxLAN HOST A ------------------------------------------ | zh-veth0(10.1.1.1) VM A | | ---|--- ...

  2. Android中Activity的四大启动模式实验简述

    作为Android四大组件之一,Activity可以说是最基本也是最常见的组件,它提供了一个显示界面,从而实现与用户的交互,作为初学者,必须熟练掌握.今天我们就来通过实验演示,来帮助大家理解Activ ...

  3. SEED实验系列文章目录

    美国雪城大学SEEDLabs实验列表 SEEDLabs是一套完整的信息安全实验,涵盖本科信息安全教学中的大部分基本原理.项目组2002年由杜文亮教授创建,目前开发了30个实验,几百所大学已采用.实验楼 ...

  4. 物联网实验4 alljoyn物联网实验之手机局域网控制设备

    AllJoyn开源物联网协议框架,官方描述是一个能够使连接设备之间进行互操作的通用软件框架和系统服务核心集,也是一个跨制造商来创建动态近端网络的软件应用.高通已经将该项目捐赠给了一个名为“AllSee ...

  5. (转)linux下和云端通讯的例程, ubuntu和openwrt实验成功(一)

    一.  HTTP请求的数据流总结#上传数据, yeelink的数据流如下POST /v1.0/device/4420/sensor/9089/datapoints HTTP/1.1Host: api. ...

  6. (原创) alljoyn物联网实验之手机局域网控制设备

    AllJoyn开源物联网协议框架,官方描述是一个能够使连接设备之间进行互操作的通用软件框架和系统服务核心集,也是一个跨制造商来创建动态近端网络的软件应用.高通已经将该项目捐赠给了一个名为“AllSee ...

  7. 实验:Oracle直接拷贝物理存储文件迁移

    实验目的:Oracle直接拷贝物理文件迁移,生产库有类似施工需求,故在实验环境简单验证一下. 实验环境: A主机:192.168.1.200 Solaris10 + Oracle 11.2.0.1 B ...

  8. Oracle RAC 更换存储实验

    实验环境准备: RHEL 6.5 + Oracle 11.2.0.4 RAC (2nodes) OCR和Voting Disk使用的是OCR1磁盘组,底层对应3个1G大小的共享LUN,一般冗余: DA ...

  9. Vertica集群扩容实验过程记录

    需求: 将3个节点的Vertica集群扩容,额外增加3个节点,即扩展到6个节点的Vertica集群. 实验环境: RHEL 6.5 + Vertica 7.2.2-2 步骤: 1.三节点Vertica ...

  10. 数据库---实验四 oracle的安全性和完整性控制

    实验内容: (一) 授权 . 以dba用户的身份登陆oracle,创建用户u1+学号后四位,u2+学号后四位. SQL> create user u1_3985 identified by &q ...

随机推荐

  1. 解决NLPIR汉语分词系统init failed问题

    今天第一次使用NLPIR汉语分词系统. 遇到的问题: 当点击时, 出现以下界面 看了博客https://blog.csdn.net/yuyanyanyanyanyu/article/details/5 ...

  2. grep -o -E

    sed 命令可以很好的进行行匹配,但从某一行中精确匹配某些内容,则使用 grep 命令并辅以 -o 和 -E 选项可达到此目的.其中 -o 表示“only-matching”,即“仅匹配”之意.光用它 ...

  3. 牛客周赛11TG B-弹钢琴

    链接:https://ac.nowcoder.com/acm/contest/941/B来源:牛客网 题目描述 春希想听和纱弹钢琴! 为了阻止异变的发生,Pi将钢琴魔改了 钢琴上有 N 个键,每个键有 ...

  4. Spring MVC RedirectAttributes取值方法

    RedirectAttributes是Spring mvc 3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的他有两种带参的方式:第一种: attr.addAttribute(" ...

  5. WinForm_UI设计

    下载

  6. 十、Vue:Vuex实现data(){}内数据多个组件间共享

    一.概述 官方文档:https://vuex.vuejs.org/zh/installation.html 1.1vuex有什么用 Vuex:实现data(){}内数据多个组件间共享一种解决方案(类似 ...

  7. SSM文件上传要点总结

    文件的上传要点: 1.表单方面:enctype="multitype/form-data" 编码方式选择混编码 input 类型采用file 2.实体类一定要进行序列化,也就是im ...

  8. C++面试常见问题——02动态分配内存

    动态分配内存 C++动态内存 C++程序中内存分为两个部分 堆:程序中未使用的内存,在程序运行时可用于动态分配内存. 栈:函数内部申明的所有变量都将占用栈内存. 很多时候不知道一个程序到底需要多少内存 ...

  9. 《Python爬虫技术:深入理解原理、技术与开发》已经出版,送Python基础视频课程

    好消息,<Python爬虫技术:深入理解原理.技术与开发>已经出版!!!   JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送Python基础视频课程!J ...

  10. MyBatis parameterType、resultType的数据类型

    parameterType.resultType的数据类型要写全限定类名或者别名. mybatis已经给常用的数据类型起好了别名,参考mybatis.pdf  3.1.1小节: 基本数据类型很少用,一 ...