You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中用Set与for循环生成有效的4位随机数字码?

解决Dart生成4位随机数字码的问题

原代码存在的问题

  • Random().nextInt(9999) 的取值范围是0到9998,包含大量1-3位的数字,这是出现非4位码的核心原因。
  • 使用Set和遍历操作完全多余,代码中仅向集合添加了一个元素,没有利用集合的特性。
  • 仅做一次生成判断,若生成的不是4位数字就直接输出错误,没有重试逻辑,无法保证得到有效码。

方案1:直接生成数值型4位随机码(无前置零)

直接生成1000到9999之间的整数,确保数值本身就是4位,无需额外判断:

import 'dart:math';
import 'dart:developer' as developer;

void _generateCode() {
  // nextInt(9000)生成0-8999的整数,加1000后范围变为1000-9999
  int validCode = Random().nextInt(9000) + 1000;
  developer.log('Code: $validCode');
}

@override
void initState() {
  super.initState();
  _generateCode();
}

方案2:生成带前置零的字符串型4位码

如果需要允许类似0012这类带前置零的4位码,可以生成0-9999的整数,再通过字符串补零处理:

import 'dart:math';
import 'dart:developer' as developer;

void _generateCode() {
  int num = Random().nextInt(10000);
  // padLeft(4, '0')会在字符串左侧补零,确保最终长度为4
  String validCode = num.toString().padLeft(4, '0');
  developer.log('Code: $validCode');
}

@override
void initState() {
  super.initState();
  _generateCode();
}

内容的提问来源于stack exchange,提问作者DevQt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:02:38