Java取整怎么失效了?

很奇怪,如红圈内所示,明明小于60的数应该除1不会等于1啊,怎么程序输出,输什么数字都是及格呢?

img

目测需要在内循环开始的地方让num=0
否则会不断累加

int num =0; 不要注释
注释掉这句num 就相当于全部班级的及格数

还有,格式化下代码吧,你这样子不好看

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7659405
  • 这篇博客也不错, 你可以看下java测试类向数据库插入数据,程序没有错误运行也正常,但是查看数据库时发现数据库未插入数据是怎么办?
  • 你还可以看下java参考手册中的 java-集合 - 关于使用和扩展Java集合框架的课程。- 聚合操作 代表你对集合进行迭代,这使你能够编写更简洁和有效的代码,处理存储在集合中的元素。 -削减
  • 除此之外, 这篇博客: java面试题中的 64、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

  • 您还可以看一下 汪翠老师的java项目实战之欢乐斗地主游戏开发教程 毕业项目课程设计带源码课程中的 创建服务器端接收客户端上线消息小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    根据问题的描述,问题似乎是关于Java中对小于60的数除以1的结果都等于1的情况。根据我个人的知识和经验,这种情况可能是因为在进行除法运算时,计算结果发生了数据类型转换。为了确认这个问题,我会编写一个简单的Java程序来测试并输出该结果。

    public class DivisionTest {
        public static void main(String[] args) {
            int number = 59;
            double result = number / 1;
            System.out.println("The result is: " + result);
        }
    }
    

    执行上述程序会发现输出结果确实是1,而不是期望的59。这是因为在除法运算中,如果操作数的类型都是整数类型,则结果会被计算为整数类型,会导致结果向下取整。为了解决这个问题,我们可以将其中一个操作数改为浮点数类型,使得结果也是浮点数类型。

    修改上述程序如下:

    public class DivisionTest {
        public static void main(String[] args) {
            int number = 59;
            double result = number / 1.0;  // 将1改为1.0
            System.out.println("The result is: " + result);
        }
    }
    

    再次执行程序,就会得到正确的结果59.0。

    综上所述,解决这个问题的方法是将除法运算中的一个操作数转化为浮点数类型,以避免结果的错误转换。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^