爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      Java随机数

      首页 知识中心 软件开发 文章详情页

      Java随机数

      2025-02-25 08:57:42 阅读次数:14

      int,new,null,Random,一个,变量,实例

      一、所有引用类型变量的初始化一定要使用new 关键字定义声明,空指针异常的错误原因可能是变量没有初始化导致的。

              每一个类体的数据成员一定要在实例化的同时赋值,用一个实例化的类实现问题中最小的一部分,比如四则运算题目,一个类就是一个算式,问题要极度分解简化。

        函数之间的返回值和参数

      二、定义int 或者 char 类型的数组   :        int [ ]a=new int [10];    int char [ ]c=new char [10];

      三、Random的使用  Random r1=new Random(seed);       这里的seed可以用 System.nanotime获取时间随机种子   

              Random 函数    r1.nextInt( ) ; 指定随机数的范围;      r1.nextInt( max) %(max-min+1)+min;      这表示从 min 到 max 的随机数

               r1.nextInt( num) ; 表示  从 0   ---  num-1  的范围随机数。 

        随机数的产生有三种方式

             第一种:new Random()

         第二种:Math.random()

         第三种:currentTimeMillis()

           第二种方法返回的数值是[0.0,1.0)的double型数值

      Java随机数

      Java随机数

      1 public class RandomTest {
      2 public static void main(String[] args) {
      3 int max=20;
      4 int min=10;
      5 Random random = new Random();
      6
      7 /*
      8 random.nextInt(max)表示生成[0,max]之间的随机数,然后对(max-min+1)取模。
      9 以生成[10,20]随机数为例,首先生成0-20的随机数,然后对(20-10+1)取模得到[0-10]之间的随机数,然后加上min=10,最后生成的是10-20的随机数
      10 */
      11 int s = random.nextInt(max)%(max-min+1) + min;
      12 System.out.println(s);
      13 }
      14 }

      四、ArrayList 数组存储数据要一个一个存,那么取数据也一定是一个一个取出来,不然容易出错!

      理解空指针异常错误产生的原因

      Java随机数

      Java随机数

      总之,NullPointerException由RuntimeException派生出来,是一个运行时异常。其意指可能会在运行的时候才会被抛出,一个变量是null,及只有其名,没有实值内容,也没分配内存,当你要去取他的长度,对他进行操作就会出现NullPointException,所以声明变量时最好给它分配好内存空间,给予赋值,例如拿该变量与一个值比较时,要么先做好该异常的处理要么给它进行判断先: if (str !=null && str “”){ …}
      判断一个String的实例s是否等于“a”时,不要写成s.equals(“a”),这样容易抛NullPointerException,而写成"a".equals(s)就可以避免这个问题,不过对变量先进行判空后再进行操作更好,尽量避免返回null,方法的返回值不要定义成为一般的类型,用数组。这样如果想要返回null的时候,就返回一个没有元素的数组。就能避免许多不必要的NullPointerException

      拿到一个题之后,先考虑一个类可以做的最基本的事情是什么,哪些数据是在类里面的,哪些数据是要在主方法的,定义方法的时候,一定每次都要考虑方法的参数和返回值,调用关系是否可以满足。尽量不要采用“散装”的数据变量来存储数据,要用高级的数据类型,数组等等,方便数据之后的存取。定义变量必须初始化赋值,实例化对象要给每一个成员变量赋初值!!!

      类的实例化对象调用自己的类是不需要再传递一个本类参数的,直接在方法中使用this. 调用就可以使用成员变量!!!

      测试二阶段一:

      FourOperations.java

      1 package fouroperations;
      2 import java.util.*;
      3 public class FourOperations {
      4 /*
      5 * 总体思路,一个实例化的类就是一个算式,里面有单独的几个函数
      6 * 判断重复函数,需要一个参数引用所有的实例化类。
      7 * 在主类定义一个ArrayList类存储每一个实例化的 FourOperations类
      8 *
      9 *
      10 *
      11 *
      12 * 1,定义一个数组存储生成的指定数量的操作数(2---5)个,那么就只需要一个随机数生成的变量,
      13 *
      14 * 2,定义一个char类型的数组 来存储4个符号 + - * /;
      15 *
      16 *
      17 */
      18 private int operationnum; //随机数个数
      19 private int max; //最大值
      20 private int min; //最小值
      21 private String formulas; //最终产生的完整的算式
      22 String symbol; //运算符号
      23 private int []allnumber=new int[5]; //操作数数组
      24 private int tempnum_1;
      25 private Random r1=new Random(10); //随机数变量
      26
      27 public int getOperationnum() {
      28 return operationnum;
      29 }
      30 public void setOperationnum(int operationnum) {
      31 this.operationnum = operationnum;
      32 }
      33 public int getMax() {
      34 return max;
      35 }
      36 public void setMax(int max) {
      37 this.max = max;
      38 }
      39 public int getMin() {
      40 return min;
      41 }
      42 public void setMin(int min) {
      43 this.min = min;
      44 }
      45 public String getFormulas() {
      46 return formulas;
      47 }
      48 public void setFormulas(String formulas) {
      49 this.formulas = formulas;
      50 }
      51 public String getSymbol() {
      52 return symbol;
      53 }
      54 public void setSymbol(String symbol) {
      55 this.symbol = symbol;
      56 }
      57 FourOperations(){}; //无参构造
      58 /*
      59 * 定义初始化变量函数
      60 * 参数
      61 * int operationnum,int max,int min
      62 */
      63 public void init(int operationnum,int max,int min) {
      64 this.setOperationnum(operationnum);
      65 this.setMax(max);
      66 this.setMin(min);
      67 }
      68
      69 /*
      70 * 定义产生随机数的函数,生成算式String对象
      71 * 参数:
      72 * 无
      73 */
      74
      75 public void creatNum( )
      76 {
      77 int tempnum_1=0;
      78 for(int j=0;j<this.operationnum;j++) {
      79 this.r1=new Random(System.nanoTime());
      80 tempnum_1=this.r1.nextInt(this.max)%(this.max-this.min+1) +this.min;
      81 this.allnumber[j]=tempnum_1;
      82 }
      83 switch(this.operationnum) {
      84 case 2:
      85 this.formulas=""+this.allnumber[0]+this.creatSymbol()+this.allnumber[1];
      86 break;
      87 case 3:
      88 this.formulas=""+this.allnumber[0]+this.creatSymbol()+this.allnumber[1]+
      89 this.creatSymbol()+this.allnumber[2];
      90 break;
      91 case 4:
      92 this.formulas=""+this.allnumber[0]+this.creatSymbol()+this.allnumber[1]+
      93 this.creatSymbol()+this.allnumber[2]+this.creatSymbol()+this.allnumber[3];
      94 break;
      95 case 5:
      96 this.formulas=""+this.allnumber[0]+this.creatSymbol()+this.allnumber[1]+
      97 this.creatSymbol()+this.allnumber[2]+this.creatSymbol()+this.allnumber[3]+
      98 this.creatSymbol()+this.allnumber[4];
      99 break;
      100 default : break;
      101 }
      102 }
      103 /*
      104 * 定义查重函数;
      105 * 参数 ArrayList<FourOperations> arrays
      106 */
      107 public boolean Repeatition(ArrayList<FourOperations> arrays) {
      108 boolean flag=false;
      109 for(int i=0;i<arrays.size();i++) {
      110 if(this.formulas.equals(arrays.get(i).formulas)) {
      111 flag=true;
      112 }
      113 }
      114 while(flag) {
      115 for(int i=0;i<arrays.size();i++) {
      116 if(!(this.formulas.equals(arrays.get(i).formulas)) ){
      117 flag=false;
      118 }
      119 this.creatNum();
      120 }
      121 }
      122 return true;
      123 }
      124 /*
      125 * 定义产生随机符号的函数
      126 * 参数 无
      127 * 返回值 String 类型的一个变量
      128 */
      129
      130 public String creatSymbol() {
      131 Random r2=new Random();
      132 int flag= r2.nextInt(4);
      133 switch(flag) {
      134 case 0:
      135 this.symbol="+";
      136 break;
      137 case 1:
      138 this.symbol="-";
      139 break;
      140 case 2:
      141 this.symbol="*";
      142 break;
      143 case 3:
      144 this.symbol="/";
      145 break;
      146 }
      147 return symbol;
      148 }
      149
      150 /*
      151 * 定义输出函数 display
      152 *
      153 */
      154
      155 public static void display(int num,ArrayList<FourOperations> arrays) {
      156 for(int j=0;j<num;j++) {
      157 //实例化类 tempclass 接收arrays的返回值
      158 FourOperations tempclass=new FourOperations();
      159 tempclass=arrays.get(j);
      160 System.out.println(""+(j+1)+"、"+tempclass.formulas);
      161 }
      162 }
      163 public int getTempnum_1() {
      164 return tempnum_1;
      165 }
      166 public void setTempnum_1(int tempnum_1) {
      167 this.tempnum_1 = tempnum_1;
      168 }
      169
      170
      177 }

      FourOperationsDome.java

      1 package fouroperations;
      2
      3 import java.lang.reflect.Array;
      4 import java.util.ArrayList;
      5 import java.util.Scanner;
      6 public class FourOperationsDemo {
      7 public static void main(String[] args) {
      8 // TODO 自动生成的方法存根
      9
      10 int num;
      11 //定义arrays数组 存储每次产生的类
      12 ArrayList<FourOperations> arrays = new ArrayList<FourOperations>();
      13
      14 Scanner sc= new Scanner(System.in);
      15 System.out.println("请输入算式的个数:");
      16 num=sc.nextInt();
      17 int operationnum; //随机数个数
      18 int max; //最大值
      19 int min; //最小值
      20 System.out.println("请输入操作数的个数(2---5)");
      21 operationnum=sc.nextInt();
      22 //输入max min
      23 while(true)
      24 {
      25 System.out.println("请输入操作数的最大值");
      26 max=sc.nextInt();
      27 System.out.println("请输入操作数的最小值");
      28 min=sc.nextInt();
      29 if(max>min)
      30 break;
      31 else {
      32 System.out.println("输入的最大值要大于最小值,请检查后重新输入!");
      33 }
      34 }
      35
      36
      37 boolean f=true; //查重循环条件
      38 for(int i=0;i<num;i++) {
      39 FourOperations test1=new FourOperations();
      40 test1.init(operationnum,max,min); //调用初始化函数
      41 test1.creatSymbol(); //调用生成随机运算符函数
      42 test1.creatNum(); //调用生成随机式子函数
      43 test1.Repeatition(arrays); //调用查重函数
      44 arrays.add(test1); //把新生成的类存到ArrayList数组中
      45 }
      46 //调用输出函数
      47 FourOperations.display(num, arrays);
      48 sc.close();
      49 }
      50 }

      @Override

      重写的一定是Object类有的方法,而且一定有一个参数是Object类的一个引用。

      Java随机数

      Object类的对象obj 要进行向下转型      (MyTestClass)obj

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/reliableyang/5939370,作者:靠谱杨的挨踢IT生活,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:Java手写实现链表队列和数组队列【数据结构与算法】

      下一篇:【Java面试题】Spring

      相关文章

      2025-05-19 09:04:44

      使用DoubleLinkedList扩展类,允许Add,Remove,Contains

      使用DoubleLinkedList扩展类,允许Add,Remove,Contains

      2025-05-19 09:04:44
      class , list , null , 扩展
      2025-05-19 09:04:44

      js小题2:构造函数介绍与普通函数对比

      js小题2:构造函数介绍与普通函数对比

      2025-05-19 09:04:44
      new , 关键字 , 函数 , 对象 , 构造函数
      2025-05-19 09:04:22

      C# byte[] 如何转换成byte*

      C# byte[] 如何转换成byte*

      2025-05-19 09:04:22
      byte , int
      2025-05-19 09:04:22

      winform关于catch Program.Main

      winform关于catch Program.Main

      2025-05-19 09:04:22
      catch , new , System , void
      2025-05-14 10:33:16

      30天拿下Rust之泛型

      在Rust语言中,泛型是一种强大的工具,它允许我们编写可复用且灵活的代码。通过泛型,我们可以创建适用于多种类型的数据结构和函数,而无需为每种类型都重复编写相同的逻辑。在Rust中,泛型通过指定类型参数来实现,这些类型参数会在编译时被具体类型所替换。

      2025-05-14 10:33:16
      Rust , 参数 , 实例 , 泛型 , 示例 , 类型
      2025-05-14 10:07:38

      C++ 11新特性之auto和decltype

      在C++ 11标准中,引入了两大关键类型推导机制,即:auto关键字和decltype表达式。这两个特性不仅极大地简化了代码编写,提升了可读性,还为开发者提供了更加灵活、直观的类型声明方式。

      2025-05-14 10:07:38
      auto , 函数 , 变量 , 类型 , 表达式
      2025-05-14 10:07:38

      30天拿下Rust之所有权

      在编程语言的世界中,Rust凭借其独特的所有权机制脱颖而出,为开发者提供了一种新颖而强大的工具来防止内存错误。这一特性不仅确保了代码的安全性,还极大地提升了程序的性能。

      2025-05-14 10:07:38
      data , Rust , 内存 , 函数 , 变量 , 数据
      2025-05-14 10:02:58

      C++ 11新特性之function

      C++ 11标准库引入了许多创新功能,其中之一便是std::function。作为函数对象容器,std::function允许开发者在编译时不知道具体类型的情况下,存储和传递任意可调用对象,极大地提升了代码的灵活性和可复用性。

      2025-05-14 10:02:58
      function , std , 一个 , 函数 , 对象 , 调用 , 赋值
      2025-05-14 10:02:58

      30天拿下Rust之结构体

      在Rust语言中,结构体是一种用户自定义的数据类型,它允许你将多个相关的值组合成一个单一的类型。结构体是一种复合数据类型,可以用来封装多个不同类型的字段,这些字段可以是基本数据类型、其他结构体、枚举类型等。通过使用结构体,你可以创建更复杂的数据结构,并定义它们的行为。

      2025-05-14 10:02:58
      Rust , 使用 , 字段 , 实例 , 方法 , 示例 , 结构
      2025-05-14 09:51:21

      java 判断map为null或者空

      java 判断map为null或者空

      2025-05-14 09:51:21
      Java , Map , null , 方法 , 是否 , 检查 , 示例
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5220046

      查看更多

      最新文章

      C# byte[] 如何转换成byte*

      2025-05-19 09:04:22

      C++ 11新特性之auto和decltype

      2025-05-14 10:07:38

      C++ 11新特性之function

      2025-05-14 10:02:58

      java 判断map为null或者空

      2025-05-14 09:51:21

      python json反序列化为对象

      2025-05-14 09:51:15

      Java交换map的key和value值

      2025-05-13 09:53:23

      查看更多

      热门文章

      指针(*)、取地址(&)、解引用(*)与引用(&)

      2023-04-10 08:54:19

      Go语言开发(3)变量

      2023-05-08 10:00:08

      C++系列三:变量、常量

      2023-06-13 08:29:57

      C#编程-14:自定义环境变量

      2023-05-23 09:44:38

      Java学习基本类型包装类--Integer

      2023-08-09 06:41:04

      1.3 常量与变量

      2023-06-20 09:18:01

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      【动态规划】【C++算法】801. 使序列递增的最小交换次数

      Java数据结构之《快速排序》

      31天Python入门——第25天:文件和目录操作

      C++算法:42接雨水

      【动态规划】C++算法312 戳气球

      C++算法:400第N位数的原理、源码及测试用例

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号