跳至主要內容

18-循环和判断的总结

AI悦创原创2023年10月27日Java体系课Java体系课大约 16 分钟...约 4857 字

0. 目录

1. Java 中的单行注释

2. 生成指定范围内的随机数

2.1 新功能

2.2 生成一个在指定范围内的随机正整数程序关键点

public class RandomNumber {

    public static void main(String[] args) {
        double randNum = 0;

        // 要生成一个大于 0.5 的随机数,只有随机数大于了 0.5,循环才会退出
        while (randNum < 0.5) {
            // 使用 Java 中的 Math.random(),生成一个随机数
            randNum = Math.random();
            System.out.println(randNum);
        }
        System.out.println("生成大于 0.5 的随机数是" + randNum);
    }
}

输出:

0.0929249734521792
0.6482227349714997
生成大于 0.5 的随机数是0.6482227349714997

生成指定范围的随机数据:

添加一个便捷判断:

很完善了?还没!

因为,我们的是判断📄,所以需要添加大于 0 才是正常的:


输出:

写程序是一个比较复杂的过程,一般来说你写到某个阶段或者某个可以具体运行的代码的时候,这个时候就可以进行运行测试一下代码是否可以正常运行且达到预期效果。

3. 从标准输出读取字符串和整数

3.1 新功能

4. 猜数字的游戏

4.1 善假于物也

4.2 游戏功能

学员提问

老师,为何 Math.random()*(rangeEnd - rangeStart) + rangeStart的值阈是 [rangeStart, rangeEnd)呢?你说的那个公式我还是不太理解
讲师回复:
Math.random()[0, 1) 所以 Math.random()*(rangeEnd - rangeStart) + rangeStart就是 rangeStart + [0, 1) * (rangeEnd - rangeStart) 所以最小值就是 0 的时候,是rangeStart ,最大值不包含为 1 的时候,就是 rangeEnd 所以是 [rangeStart, rangeEnd)
Math.random 的注释:

  • Returns a {@code double} value with a positive sign, greater
  • than or equal to {@code 0.0} and less than {@code 1.0}.

在计算有余数的除法时,余数必须小于除数,如果余数大于等于除数,则商就应进一。直至余数小于除数。(小学数学)
余数一定小于除数(除数为 60)就是一定小于 60.
讲师回复:🉑️

其实也可以这样
int zuiXiao =20;
int zuiDa =40;
double suiJi= Math.random();
int Zhi =(int)(suiJi*(zuiDa-zuiXiao+1)+zuiXiao);
System.out.println(Zhi);

老师, 我想问一个问题, 就是比如说取一个80分以上的分数 可以 (int)(Math.random()*21)+80
朋友是这样的,因为 Math.random 是 0 到 1 随机 左闭又开,所以乘 21 是 0 到 21 左闭右开,强制转化成 int 类型就是0-20闭区间,所以是在80到100之间随机

感觉这个随机数的写法不是很好理解
作者回复: 这里为了使用更多的操作符,确实搞得有点复杂。可以参考这节课里别的同学的提问和我的回答。有些别的写法更简单。

老师好,我不太理解为什么在生成 rangeStart 到 rangeEnd 之间的随机数时,为什么不用Math.random()*(rangeEnd - rangeStart) + rangeStart这个公式呀?
这个公式看上去很简洁直接,也好理解。 在您的讲课视频里,您先用 Math.random() 产生的随机数乘以一个很大的数字,然后再用这个成倍放大过的随机数和(rangeEnd - rangeStart) 的结果做取模运算,然后再把结果加上 rangeStart。
我不太理解,在这里为什么要用到取模运算呢?取模运算的意义在哪里呢?为什么不直接用 Math.random()*(rangeEnd - rangeStart) + rangeStart生成想要区间内的随机数呢? 谢谢老师的解答,辛苦老师啦_
**作者回复: **
可以,稍微简单点可以这样写 (int)(Math.random(rangeEnd - rangeStart) + 0.5) + rangeStart,这个结果范围会是 [rangeStart, rangeEnd)

我遇到的问题 错误: 找不到或无法加载主类 java.util.scanner 原因: java.lang.ClassNotFoundException: java.util.scanner 我的问题背景 Macos IDEA 2022.2.1 运行代码的时候提示无法加载主类,其他的代码都能正常运行 import java.util.Scanner; public class scanner { public static void main(String[] args) { Scanner in = new scanner(System.in); System.out.println("请问你的名字是?"); String str = in.nextLine(); System.out.println(str+ ",你好"); } }
作者回复:

  1. 建议把类名改一下比如改成MyScanner,如果你的代码完全如你贴出来的这样,应该会有问题,“Scanner in = new scanner(System.in);”,new scanner其实是创建了一个你自己的类的实例,这个是不能够赋值给Scanner的。
  2. 可以按照这篇FAQ配置一下JDK https://xie.infoq.cn/article/d76e5262dfde072780d414ff7

欢迎关注我公众号:AI悦创,有更多更好玩的等你发现!

公众号:AI悦创【二维码】

AI悦创·编程一对一

AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh

C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh

方法一:QQ

方法二:微信:Jiabcdefh

你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
通知
关于编程私教&加密文章