JAVA基础编码。为什么100/1=110,300/3、400/4、500/5呢?

标签 java math operators calculator

我需要帮助来弄清楚发生了什么。 我是讲意大利语的人,所以我用意大利语命名了一些变量。 经过一段时间的无编码之后,我开始编写一些基本且简单的代码。我制作了一个名为“Prova”的类,它是一个计算器。 4 种方法:加、减、积和除。 前三种方法没有异常,后一种有。 我创建了一个可运行的类并看到了一些奇怪的结果

代码如下:

    public class Prova {
    public int add(int addendo1, int addendo2) {
       int res;
       res = addendo1+addendo2;
       return res;
    }
    public int minus(int minuendo, int sottraendo) {
       int res;
       res = minuendo-sottraendo;
       return res;
    }
    public int multiply(int fattore1, int fattore2) {
       int res;
       res = fattore1*fattore2;
       return res;
    }
    public double divide(int divisore, int dividendo) {
       double res;
       res = divisore/dividendo;
       return res;
    }`

命令如下: public static void main(String[] args) {

    Prova somma = new Prova();
    System.out.println(somma.add(5, 5)+"\n");
    System.out.println(differenza.minus(20, 11)+"\n");
    System.out.println(new Prova().product(2, 4)+"\n\n");
    System.out.println(new Prova().divide(100, 1)+'\n');
    System.out.println(new Prova().divide(100, 2)+'\n');
    System.out.println(new Prova().divide(300, 3)+'\n');
    System.out.println(new Prova().divide(400, 4)+'\n');
    System.out.println(new Prova().divide(500, 5)+'\n');
    System.out.println(new Prova().divide(600, 6)+'\n');
}

这是我的结果:

- 10        //somma.add(5,5) 
- 9         //differenza.minus(20,11)
- 8         //multiply(2,4) 
- 110.0     //divide(100,1)
- 60.0      //divide(100,2)
- 110.0     //divide(300,3)
- 110.0     //divide(400,4)
- 110.0     //divide(500,5)
- 110.0     //divide(600,6)

其他尝试使用 divide 方法的人已经给出

14/2 = 17.0;
1/1 = 11.0;
2/2 = 11.0;
3/3 = 11.0;

运算符在我的 Class Prova.divide() 之外工作正常。我的问题是这里发生了什么?我看不到我做错了什么

最佳答案

我可以看出您想将换行符 ( '\n') 连接到您的结果。因为您返回的结果是 double ,您不能简单地添加 '\n'结果,因为它将使用其对应的 int值(10)。这说明了为什么您会收到 110当你划分100通过 1然后添加 '\n' .

要解决这个问题,我会更改 '\n'"\n"所以你的结果将被强制为 String首先。

此外,如果您决定除以结果为分数的任何东西,您将遇到意想不到的整数除法。请参阅:Why is the result of 1/3 == 0?

注意:因为您使用的是 System.out.println , 无论如何都不需要附加换行符!

关于JAVA基础编码。为什么100/1=110,300/3、400/4、500/5呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53643268/

相关文章:

java - 如何将这个等式放入java代码中?

c++ - 计算两个物体之间的距离

algorithm - 如果两个线段重叠或相交,则将它们组合在同一个圆上

python - python 中 not() 的顺序有什么问题?

C++ and,or,not,xor 关键字

java - 使用新比较器时 TreeMap putall 问题

java - 没有为参数 [io.vertx.ext.unit.TestContext arg0] 注册 ParameterResolver

java - itext7 - 不剪切内容的最大字体大小

java - 如何正确地将 Java 中的 double 值设置为两位数

Python - 在运行时使用运算符