鱼C论坛

 找回密码
 立即注册
查看: 2805|回复: 5

[已解决]java输出成四位验证码 组成:汉字,大小写字母,数字。

[复制链接]
发表于 2022-4-9 13:26:03 | 显示全部楼层 |阅读模式
1鱼币
  1. package com.company;

  2. import java.util.Random;

  3. public class ClassDemo01 {
  4.     //使用学过知识生成四位验证码 组成:汉字,大小写字母,数字。
  5.     public static void main(String[] args) {
  6.         String str="abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789";
  7.         Random r=new Random();//创建random 开始准备随机
  8.         String arr[]=new String [4];//创建数组
  9.         String b="";
  10.         for(int i=0;i<4;i++)
  11.         {
  12.             int n=r.nextInt(62);

  13.             arr[i]=str.substring(n,n+1);
  14.             b+=arr[i];

  15.         }

  16.         System.out.print("验证码:"+b);
  17.     }
  18. }
复制代码
这个我写的重新加点什么东西才能得到四位验证码中有汉字的情况?
最佳答案
2022-4-9 13:26:04
本帖最后由 isdkz 于 2022-4-10 20:36 编辑
揽一池星河 发表于 2022-4-9 19:10
加了,但是出现问题了欸
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: Stri ...


因为你的随机数超过字符串长度了,改一下就不会超过字符串的长度了

  1. package com.company;

  2. import java.util.Random;

  3. public class ClassDemo01 {
  4.     //使用学过知识生成四位验证码 组成:汉字,大小写字母,数字。
  5.     public static void main(String[] args) {
  6.         String str="去微软推哦怕立刻登机口出现地方呢发范德萨自行车vdfdffdferervdget8784515吧";
  7.         Random r=new Random();//创建random 开始准备随机
  8.         String arr[]=new String [4];//创建数组
  9.         String b="";
  10.         int length = str.length();                                 // 注意这里
  11.         for(int i=0;i<4;i++)
  12.         {
  13.             int n=r.nextInt(length);                                // 注意这里

  14.             arr[i]=str.substring(n,n+1);
  15.             b+=arr[i];

  16.         }

  17.         System.out.print("验证码:"+b);
  18.     }
  19. }
复制代码

最佳答案

查看完整内容

因为你的随机数超过字符串长度了,改一下就不会超过字符串的长度了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-9 13:26:04 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-4-10 20:36 编辑
揽一池星河 发表于 2022-4-9 19:10
加了,但是出现问题了欸
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: Stri ...


因为你的随机数超过字符串长度了,改一下就不会超过字符串的长度了

  1. package com.company;

  2. import java.util.Random;

  3. public class ClassDemo01 {
  4.     //使用学过知识生成四位验证码 组成:汉字,大小写字母,数字。
  5.     public static void main(String[] args) {
  6.         String str="去微软推哦怕立刻登机口出现地方呢发范德萨自行车vdfdffdferervdget8784515吧";
  7.         Random r=new Random();//创建random 开始准备随机
  8.         String arr[]=new String [4];//创建数组
  9.         String b="";
  10.         int length = str.length();                                 // 注意这里
  11.         for(int i=0;i<4;i++)
  12.         {
  13.             int n=r.nextInt(length);                                // 注意这里

  14.             arr[i]=str.substring(n,n+1);
  15.             b+=arr[i];

  16.         }

  17.         System.out.print("验证码:"+b);
  18.     }
  19. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-9 15:45:10 | 显示全部楼层
String str = ""这里面加汉字不就好了、、、、、、、、、、、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-9 19:10:12 | 显示全部楼层
唯有无奈 发表于 2022-4-9 15:45
String str = ""这里面加汉字不就好了、、、、、、、、、、、

加了,但是出现问题了欸
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 58
        at java.lang.String.substring(String.java:1963)
        at com.company.ClassDemo01.main(ClassDemo01.java:16)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-10 14:41:45 | 显示全部楼层
揽一池星河 发表于 2022-4-9 19:10
加了,但是出现问题了欸
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: Stri ...

你怎么加的不应该报错啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-12 21:41:16 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 00:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表