java (int)Math.random()*100 运算优先级

Java核心API实战指南:从字符串集合到日期处理的深度解析 在Java编程中,API(应用程序编程接口)是构建应用程序的基础工具集,它提供了标准化的方法来实现特定功能。理解API的设计原理,能帮助开发者编写更高效、健壮的代码。例如,字符串处理时,String的不可变性确保了线程安全和哈希缓存,而StringBuilder则在单线程环境下提供高性能的字符串拼接。集合框架的核心在于区分List、Set和Map的不同特性,如ArrayList的随机访问优势和HashMap的哈希桶机制。这些API的技术价值在于提升开发效率、保证代码质量,并优化系统性能。在实际应用场景中,从 阅读详情
x=(int)Math.random()*100;//错误写法 ,最终结果总是0

这个写法是错误的,因为Java的运算符优先级问题。(int)Math.random()会先把Math.random()的结果(一个0.0到1.0之间的小数)强制转换成整数(结果总是0),然后再乘以100,所以最终x总是0。

正确的应该是:

x = (int)(Math.random() * 100);

这样就会先计算Math.random() * 100(得到一个0.0到100.0之间的小数),然后再转换成整数(结果就是0到99之间的随机整数)。
这些小细节一定得注意!!!

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class TestI {
    int i = 1;
    int sum = 0;
    int random=0;
    
    TestI() {
        Timer timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
            	random=(int)(Math.random()*10);
                sum = i+random;
                System.out.print(" sum = " + sum);
                if (sum > 8) {
                	random=-10;
                    i = -1;
                    System.out.println();
                } else if (sum < 0) {
                	random=0;
                    i = 1;
                    System.out.println();
                }
            }
        });
        timer.start();
        
        
        JFrame frame = new JFrame("Timer Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);
        frame.setVisible(true);
    }
    
    public static void main(String[] args) {
        // 使用SwingUtilities确保在事件调度线程中运行
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TestI();
            }
        });
    }
}

Java-Study 基础环境搭建。 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第三百零五篇 计算机系统中的各类运算操作01

编号类型领域运算操作运算类型算法算法的详细设计及数学分析参数列表及参数的数值设计应用场景 (100+条)集合运算​1集合运算关系代数并集 (Union)集合运算归并排序去重合并两个集合,去除重复元素。时间复杂度 O(n+m),n,m为两集合大小。输入:集合A, B。输出:A∪B。数据集成、多表结果合并、去重后的全量数据提取。2集合运算关系代数交集 (Intersection)集合运算哈希交集找出同时属于两个集合的元素。平均时间复杂度 O(min(n,m)),最坏 O(n*m)。输入:集合A, B。输出:A∩

weixin_49199313的博客 1388

JAVA类型转换的就近原则(int)(Math.random()*100)与(int)Math.random()*100

System.out.println((int)Math.random()*100); 想要输出【0,99】的随机整数,打印(int)Math.random()*100; 可是得到的结果却是0; 明明知道Math.random()等于[0,1)的double啊,为啥结果是0? 原来,(int)转换的时候,直接把0.xxxxxxx转换为整型,也就是0了,然后用0*100结果还会是0; 怎么解决呢?...

qq_26233899的博客 2443

从CCD数据上报看wxHOOK的封号风险与规避

本文深入分析了微信CCD数据上报机制对wxHOOK的检测逻辑与封号风险,揭示了调试器路径暴露、非白名单DLL加载和内存校验失败等关键风险点。通过实战案例和规避方案,帮助开发者理解如何安全使用wxHOOK技术,避免封号风险,包括内存镜像欺骗、内核级隐蔽和硬件辅助方案等高级技巧。

weixin_27875131的博客 625

JAVA 生成随机数两种方式

1、Math.random() Math.random()生成的是0.0~1.0的小数(不包括1.0哦),如果你想要的正好就是小数,那么直接乘以一个值就好了 例如:生成 [0.0,100.0) 的double数 但是大部分情况下,都是生成一个整数,所以这时候我们就要用到类型转换,将生成的double转换成int值。 注意是: int a = (int)(Math.random() * 100); 这种方式是将生成的0~1先乘以100,再将这个数变成int 而不是: int a =

qq_62939743的博客 5859

深度学习12—VGG19实现

state_dict = load_state_dict_from_url(model_urls['vgg19'],model_dir='./model' ,progress=progress)#预训练模型地址。accuracy=((out.argmax(1)==label).sum()).clone().detach().cpu().numpy()#正确预测的总和比测试集的长度,即预测正确的精度。image=torch.reshape(image,(1,3,224,224))#四维图形,RGB三个通。

m0_55196097的博客 2441

JS自动化生成大疆WPML航线文件实战(附完整代码与云台控制解析)

本文详细介绍了如何利用JavaScript自动化生成大疆WPML航线文件,以解决手动规划航线效率低、易出错的问题。通过解析WPML文件结构,特别是云台控制等核心参数,并封装可复用的JS模板函数,开发者能够快速批量生成复杂航线,如倾斜摄影五向飞行,实现航测与巡检任务的标准化与高效执行。

weixin_29007243的博客 299

猜数游戏

package hello; import java.util.Scanner; public class Ademo03 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); int number=(int...

boncsdn的博客 320

cs231n作业 assignment 1 q1 q2 q3

请先看课程作业地址。有两种做作业的方法,一种是在google Colab上做 (需魔法),另一种就是下载到本地,但是我懒得在本地配置环境,太麻烦了,还得修改一些基础代码,我就直接在google colab上做了google colab 配置环境只需要跟着教程走就好了最后还有一题解答题懒得做的,这个题目做的没啥意思。让我们用简单写法来实现softmax的loss函数与梯度计算。

Leezed525的博客 9277

java中生成随机数

java中生成随机数 Java中提供了一个获取随机数的一个类(Math) Math:此类在java.lang包下,jvm会自动导入,所以无需import导包 生成随机数要使用Math类下的方法:random()  方法的返回值是[0.0 - 1.0) 1.获取[0.0 - 1.0)内的随机数: 默认生成的是double类型数据 double d = Math.random(); 2.获取一个1~100之间的随机数(int型) int num = (int) (Math.random()*100+1);

GuessHat的博客 421

挣脱枷锁:网页禁止复制/F12失效/右键失灵时的破局之道

大家在网上冲浪的否遇到过这种情况?急需网页上的一段关键信息、一段优美的文字、一个重要的代码片段,或者只是想收藏某篇文章,却发现:文本选择被阻止,右键菜单被禁用,开发者工具(F12)被屏蔽,查看源代码(Ctrl+U)失效?本文会有力解决这些封锁。

安德洛夫 2109

Kafka 入门篇(一)

初识 Kafka 什么是 Kafka Kafka 的基本术语 Kafka 的特性(设计原则) Kafka 的使用场景 Kafka 的消息队列 点对点模式的消息队列 发布-订阅模式的消息队列 Kafka 系统架构 核心 API Kafka 为何如此之快 broker 端配置 broker.id port zookeeper.connect log.dirs num.recovery.threads.per.data.dir auto.create.topics.enable topic默认配置 num.par

1232

java中的int i=(int)(Math.random()*100)+1;怎样理解?

Math.random()返回一个double类型的0.0-1.0之间的数值,包括0,不包括1,这个数值*100,那范围不就是0-100(不包括)了么。强转之后范围就是0-99,+1

Rootone的博客 1万+

51单片机入门指南-基于STC89C52(持续更新)

一、环境介绍 编程IDE: keil5 单片机型号: STC89C51/52 开发板: 普中科技的开发板 完整PDF资源下载地址:https://download.csdn.net/download/xiaolong1126626497/19785856 二、51单片机开发手册介绍 2.1 前言 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。 该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最.

8797

Java exercise运算与条件语句

//随机点坐标,强制转换的运算优先级应该比加减乘除高,所以, //(int)Math.random()* 100 先强制转换,得0,0乘以100还是0 int x1 = (int) Math.random() * 100 - 50; ...

solo1819121506的博客 319

使用 Python 实现基于 AGA8 GERG - 2008 方程计算掺氢天然气压缩因子的示例代码

AGA8 GERG - 2008 方程是用于计算天然气混合物热力学性质的一种方法,下面是一个使用 Python 实现基于 AGA8 GERG - 2008 方程计算掺氢天然气压缩因子的示例代码。需要注意的是,AGA8 GERG - 2008 方程非常复杂,完整实现需要大量的系数和详细的计算步骤。这里我们简化了部分过程,使用CoolProp库来完成计算,因为CoolProp已经实现了 GERG - 2008 方程。

AI的内部世界的博客 887

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java语言基础问题

一、动手实验: 案例: 为什么double类型的数值进行运算得不到“数学上精确”的结果? 这个涉及到二进制与十进制的转换问题。 N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4=1×10²+2×10+3×(10的0次幂)+4×(10的-1次幂);其它进制的也是同理,例如二进制数11.01=1×2+1×(2的0次幂)+0+1×(2的-2次幂)=十进制的3...

weixin_30478923的博客 85

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java实现四则运算生成器的设计与优化

四则运算生成器是软件工程教学的经典实践项目,通过随机算法生成算术表达式并计算结果。其核心在于表达式解析与计算算法,如Dijkstra双栈算法处理运算符优先级。在Java实现中,采用MVC架构和工厂模式、策略模式等设计模式,可提升代码的可维护性和扩展性。这类项目不仅训练基础编程能力,更能培养软件工程思维,适用于在线教育、自动批改系统等场景。通过单元测试和性能优化,可以构建健壮的运算系统,满足教学和实际应用需求。

weixin_34006965的博客 439

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

位运算判断2的幂次数:原理与优化实践

位运算是计算机底层的高效操作方式,通过二进制位的直接操作实现快速计算。其核心原理是利用CPU原生支持的与、或、非等逻辑门电路,相比算术运算能减少时钟周期消耗。在算法优化中,位运算常用于状态压缩、哈希计算等场景,特别是判断2的幂次数这类基础问题。通过n & (n-1) == 0的特性检测,可以避免循环或对数运算,在内存管理、哈希表扩容等高频操作中提升性能。本文以Python/C++为例,详解如何利用位运算特性优化2的幂次数判断,并分析其在Linux内核、Java HashMap等实际工程中的应用。

weixin_33842304的博客 371

【Java入门到精通】*基础篇

Java入门教程摘要(1-6期) 本系列从零讲解Java,基于Java 8 LTS版本。 Java历史与特性:1995年Sun公司发布,以跨平台、面向对象为核心优势,应用于后端、安卓、大数据等领域。 跨平台原理:通过JVM将字节码转换为机器码,实现"一次编写,到处运行"。 环境组件:JDK(开发工具包)⊃ JRE(运行环境)⊃ JVM(虚拟机),开发需安装JDK。 安装配置:提供Windows/Mac的JDK安装指南,强调路径无中文/空格。 环境变量:设置JAVA_HOME指向JDK路径,Path添加bin

2301_81248642的博客 930

【Java语法与编程基础】--笔记

本文摘要:本文系统介绍了Java编程基础语法和核心概念,包括数据类型、变量、运算符、控制结构、数组、方法等基本语法要素,并深入讲解了面向对象编程原理。内容涵盖基本语法规则、程序控制流程、数据结构处理、方法定义与调用,以及面向对象的核心特性如封装、继承、多态等。文章还介绍了Java内存管理机制、static和final关键字用法,以及枚举类的定义和使用。通过实例代码展示了算法实现和编程技巧,为Java初学者提供了全面的语法参考和编程指导。

weixin_51005254的博客 601

java学习笔记(【黑马程序员2026版AI+Java零基础全套视频课程,Java入门到大神AI智能应用开发,涵盖Java核心语法、大量力扣、牛客网算法训练及Java项目开发】https://www)

安装验证此前path(默认的java路径)增加检查有javajdk版本还是17,0,没成功。

m0_74384754的博客 638

Python实现工程化四则运算生成器的设计与实践

四则运算生成器是软件工程教学的经典案例,通过Python实现可以深入理解模块化设计和工程化实践。在软件开发中,随机数生成与运算符组合看似简单,实则涉及异常处理、难度分级、题目去重等关键技术点。采用MVC架构和单元测试能有效提升代码质量,而日志系统和自动化批改功能则体现了工程实践的完整性。本文以Python为例,详细解析如何实现支持分数运算和难度控制的教学用四则运算系统,其中测试驱动开发(TDD)和模块化设计是值得关注的两个热词。这类项目不仅能培养基础编程能力,更是理解软件开发生命周期的绝佳实践。

weixin_34234721的博客 426

Java 笔记

声明常量 关键字:final 语法:final datatype C0NSTANTNAHE -value 例如:final double PI = 3.14159 从键盘读取数值 Scanner 对象的方法方法描述: nextByte() 读取一个byte 类型的整数 nextShortO 读取一个short 类型的整数 nextlntO 读取一个int 类型的整数 nextLongO 读取一个long 类型的整数 nextFloat() 读取一个float 类铟的数 nextDoubleO 读取一..

Dreamer42的博客 617

20182333 2019-2020-1 《数据结构与面向对象程序设计》第2、3周学习总结

20182333 2019-2020-1 《数据结构与面向对象程序设计》第2、3周学习总结 教材学习内容总结 第二章 1.字符串的概念以及拼接。 2.println方法和print方法的用法和区别 3.转义序列的概念和用法。 4.变量常量和赋值语句的相关内容。 5.8个基本数据类型。 6.表达式的概念,算数、自增自减、赋值三种运算符以及运算符优先级。 7.数据类型转换的安全性以及三种技...

J20140610的博客 310

Go / C / Python / Java 四语言对照学习总览

按统一维度横向对比四门语言的核心知识点,便于交叉记忆与迁移学习。

2401_83227843的博客 949

JAVA基础,区别于C++

本人熟悉C++,只例举了JAVA 与 C++ 不同之处

515
上一篇: Java 中的AffineTransform 是什么?
下一篇: Java 2D 图形变换方法
wu_android
博客等级 码龄10年 94粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值