还有一个修改生成文件路径的功能,以后再写

附上代码

package com.str;

import java.io.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

public class Pwd extends JFrame implements ActionListener,FocusListener{

//初始化列表数组

String number[] = {"0","1","2","3","4","5","6","7","8","9"};

//创建控件

JLabel bq1 = new JLabel("最小位数");

JLabel bq2 = new JLabel("最大位数");

JLabel bq3 = new JLabel("文件大小");

JTextField bjk = new JTextField("",6);

JComboBox lbk1 = new JComboBox(number);

JComboBox lbk2 = new JComboBox(number);

JButton an = new JButton("生成字典");

JTextField wbq = new JTextField("字典生成路径,默认在程序运行目录下");

Pwd(){

//初始化窗体参数

super("WIFI纯数字密码字典生成器");

setVisible(true);

setSize(400,150);

setLocationRelativeTo(null);

setLayout(new FlowLayout());

setResizable(false);

//初始化布局

JPanel One = new JPanel(new GridLayout(3,1));

JPanel Two = new JPanel(new GridLayout(1,4));

JPanel Three = new JPanel(new GridLayout(1,3));

JPanel Four = new JPanel(new GridLayout(1,1));

//添加布局到容器

getContentPane().add(One);

One.add(Two);

One.add(Three);

One.add(Four);

//添加控件到容器

Two.add(bq1);

Two.add(lbk1);

Two.add(bq2);

Two.add(lbk2);

Three.add(bq3);

Three.add(bjk);

Three.add(an);

Four.add(wbq);

//控件参数设置

bjk.setEditable(false);

wbq.setFont(new Font("黑体",Font.BOLD,20));

wbq.setEnabled(false);

//绑定监听对象

an.addActionListener(this);

wbq.addFocusListener(this);

}

//事件源

public void actionPerformed(ActionEvent e) {

//按钮发生事件

if(e.getSource().equals(an)) {

//返回现行选中项

int minNum;

int maxNum;

//获取字典长度

int minNumLength=0;

int maxNumLength=0;

//获取字典最小长度和最大长度

minNum = lbk1.getSelectedIndex();

maxNum = lbk2.getSelectedIndex();

//初始化字典最小长度

switch(minNum) {

case 0:

JOptionPane.showMessageDialog(this, "最小长度不能为0", "信息", 1);

break;

}

//初始化字典最大长度

switch(maxNum) {

case 0:

JOptionPane.showMessageDialog(this, "长度太小", "信息", 1);

break;

case 1:

if(maxNum

JOptionPane.showMessageDialog(this, "最大长度不能小于最小长度", "信息", 1);

else

maxNumLength = 9;

break;

case 2:

if(maxNum

JOptionPane.showMessageDialog(this, "最大长度不能小于最小长度", "信息", 1);

else

maxNumLength = 99;

break;

case 3:

if(maxNum

JOptionPane.showMessageDialog(this, "最大长度不能小于最小长度", "信息", 1);

else

maxNumLength = 999;

break;

case 4:

if(maxNum

JOptionPane.showMessageDialog(this, "最大长度不能小于最小长度", "信息", 1);

else

maxNumLength = 9999;

break;

case 5:

if(maxNum

JOptionPane.showMessageDialog(this, "最大长度不能小于最小长度", "信息", 1);

else

maxNumLength = 99999;

break;

case 6:

if(maxNum

JOptionPane.showMessageDialog(this, "最大长度不能小于最小长度", "信息", 1);

else

maxNumLength = 999999;

break;

case 7:

if(maxNum

JOptionPane.showMessageDialog(this, "最大长度不能小于最小长度", "信息", 1);

else

maxNumLength = 9999999;

break;

case 8:

if(maxNum

JOptionPane.showMessageDialog(this, "最大长度不能小于最小长度", "信息", 1);

else

maxNumLength = 99999999;

break;

case 9:

if(maxNum

JOptionPane.showMessageDialog(this, "最大长度不能小于最小长度", "信息", 1);

else

maxNumLength = 999999999;

break;

}

//字典计算

/*猜测:可能赋值成功了,但是都被int识别为了一个0,可能需要转换成字符串累加

* 这可能会导致上面的操作被视为同一种

* int a = 0; 和  int a = 00000000;        可能在int看来都是0,这导致了最小数不能以000000开始

*/

while(maxNumLength >= minNumLength) {

//                                System.out.println(maxNumLength +" "+ minNumLength);

//minNumLength自增,然后每次循环都写入文件

int n = minNumLength+1;

String s="";

try {

FileWriter fw = new FileWriter("WifiWorlds.txt",true);

BufferedWriter bfw = new BufferedWriter(fw);

//===================================================

//a=00000 == a=0处理方法

minNumLength+=1;

if(maxNum>=minNum) {

//获取当前0的位数

int x = maxNum-minNum;

//解决int对一位以上的0不区别

switch(x) {

case 1:

s="0";

break;

case 2:

s="00";

break;

case 3:

s="000";

break;

case 4:

s="0000";

break;

case 5:

s="00000";

break;

case 6:

s="000000";

break;

case 7:

s="0000000";

break;

case 8:

s="00000000";

break;

case 9:

s="000000000";

break;

}

s=s+String.valueOf(minNumLength);

}

//仔细想想这一段加不加0好像都没什么意义

//a=0-a=010,一样是001...009,010这样递增的,,先这样放着吧

//a=00000 == a=0处理方法

//===================================================

fw.write(s+"\r\n");        //换行且当成字符串处理而不是字符

fw.flush();

fw.close();

bfw.close();

}

catch(IOException ee) {

JOptionPane.showMessageDialog(this, "文件创建失败", "错误", 0);

}

}

//计算文件大小

File f = new File("WifiWorlds.txt");

bjk.setText((f.length() / 1024)+"KB");

//设置文件路径

if(wbq.getText() != "字典生成路径,默认在程序运行目录下") {

wbq.setText("功能以后在实现,困得眼睛都睁不开了");

}

}

}

//获取焦点

public void focusGained(FocusEvent e) {

//清除文本区中的提示文字

if(e.getSource().equals(wbq)) {

if(wbq.getText().equals("字典生成路径,默认在程序运行目录下"))

wbq.setText(null);

}

}

//失去焦点

public void focusLost(FocusEvent e) {

//如果文本区中的文本为空时显示提示文字

if(e.getSource().equals(wbq)) {

if(wbq.getText().equals(""))

wbq.setText("字典生成路径,默认在程序运行目录下");

}

}

//主函数

public static void main(String[] args) {

new Pwd();

}

}

目前未处理的问题

最小位数无论设置成几位都没效果,它们都会从0开始,这里的0可能在输出之前被int视为了一个0,因为他有可能是000000000-999999999,在int类型看来就是一个0

我后来是把他们分开处理了就是在计算之前先加上当前应该得到的位数0补上,但是位数一旦不是个位时0就会多出来,但不会影响正常使用

java 密码生成器_[Java小白]WIFI纯数字密码字典生成器相关推荐

  1. 用java实现生成12位的随机纯数字且首位不能为0

    用java实现生成12位的随机纯数字且首位不能为0 1 逐个拼接法 1.1 核心思想 a.把得到的符合条件的每一位数字通过**+进行字符串的拼接** b.条件:为首位数字时,需要把范围去除0,其余位0 ...

  2. 30自学java之路_从小白到精通的java自学之路

    原标题:从小白到精通的java自学之路 随着互联网行业的高速发展,编程无疑越来越深入人心.而Java是当前世界非常流行的编程语言之一,代表着很高的薪资和很好的待遇.现在社会也确实有很多人渐渐的对jav ...

  3. java取负数_[Java] 告别“CV 工程师”码出高效!(基础篇)

    作为一名资深的 CV 工程师,某天,当我再一次日常看见满屏的报错信息与键盘上已经磨的泛白的 Ctrl.C.V 这三个按键时,我顿悟了. 百度谷歌复制粘贴虽然很香,但是总是依靠前人种树,终会有一天失去乘 ...

  4. java控制语句练习题_[Java初探实例篇02]__流程控制语句知识相关的实例练习

    本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...

  5. java 文本压缩_[Java基础]Java使用GZIP进行文本压缩

    import java.io.IOException; import java.util.zip.GZIPOutputStream; import org.apache.commons.io.outp ...

  6. java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...

    笔者以前学过C++语言.众所周知,C++也是一门面向对象程序设计语言.还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为 ...

  7. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

  8. java斗地主发牌_[Java源码]扑克牌——斗地主发牌实现

    --------------------------------------- --------------------------------------- ----------一个扑克牌核心和简单 ...

  9. java小朋友猜拳_[Java教程]Java猜拳小游戏(剪刀、石头、布)

    [Java教程]Java猜拳小游戏(剪刀.石头.布) 0 2015-09-29 08:00:04 import java.util.Random;import java.util.Scanner;pu ...

  10. java星空屏幕_[Java教程]窗口设置_星空网

    窗口设置 2016-04-13 0 /** * 这个是GUI的事例程序: * */ package w160412.wang.main;import java.awt.Color; import ja ...

最新文章

  1. JavaScript放头部不执行的情况(针对新手)
  2. mysql查询表字段是否存在_Mysql判断表字段或索引是否存在
  3. Codeforces 600E Lomsat gelral (树上启发式合并)
  4. cryengine开源了吗_Linux上的CryEngine支持,将开源带入厨房等
  5. NEC电影服务器型号,NEC数字电影放映一体机NC2300S-A+详细信息_产品参数_价格_联系方式_DAV数字音视工程网...
  6. 阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > CoAP协议接入 >
  7. 用账号连无线网怎么连接网络连接服务器,路由器怎么共用一个宽带账号
  8. 通过 PXE 自动安装操作系统:部署 PXE Server
  9. Ajax案例:简易的购书网页
  10. 微信小程序使用百度地图的Api
  11. 中国最美的一千个汉字 : 千字文
  12. 机器学习入门实例三——线性回归预测店铺销售额
  13. lvds输入悬空_LVDS原理及应用
  14. 三个灭点来衡量一个立方体
  15. 咖说 | 关于当前环境下的经济分析
  16. 2022/05/26 css animate按钮样式收集
  17. smallworld 下的magik module 的logger和service provider
  18. [转]“子不语怪力乱神”新解
  19. php实训报告英文摘要,English Abstract _和大家分享下如何写英文摘要
  20. Win10打开游戏提示需要新应用打开此ms-gamingoverlay的解决方法

热门文章

  1. python深度学习图像处理CSV文件分类标签图片到各个文件夹
  2. 日常小tip_Bat命令运行Java程序
  3. 求知讲堂Java笔记
  4. 快进来,详解MySQL游标
  5. 一行代码就能写一个日志打印组件,你信吗?为你揭晓RTOS中日志打印组件的核心
  6. 使用AJAX实现上传文件
  7. 经验分享:vim编辑器的常用命令使用汇总
  8. 【干货】常用EXE文件反编译工具
  9. 直播聊天室源码php,某网络直播聊天室源码 财经直播聊天系统
  10. CCNA学习指南中文第七版——8.22章节详解