JAVA 基本编码。为什么100/1=110,300/3、400/4、500/5呢?
JAVA basic coding. Why 100/1=110, as 300/3 ,400/4, 500/5 do?
我需要帮助来弄清楚发生了什么。
我是讲意大利语的人,所以我用意大利语命名了一些变量。
经过一段时间的无编码之后,我开始编写一些基本且简单的代码。我制作了一个名为 "Prova" 的 Class,它是一个计算器。
4 种方法:加、减、积和除。
前三种方法没有异常,后一种有。
我做了一个可运行的 class 并看到了一些奇怪的结果
代码如下:
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() 之外工作正常。我的问题是这里发生了什么?我看不到我做了什么 wronf
我看得出来您想将换行符 ('\n'
) 连接到您的结果。因为您要将结果作为 double
返回,所以您不能简单地将 '\n'
添加到结果中,因为它将使用其对应的 int
值 (10
)。这说明了为什么当您将 100
除以 1
然后添加 '\n'
.
时您会收到 110
要解决此问题,我会将 '\n'
更改为 "\n"
,这样您的结果将首先被强制转换为 String
。
此外,如果您决定除以分数的任何结果,您将 运行 变成意想不到的整数除法。参见:Why is the result of 1/3 == 0?
注意:因为您使用的是 System.out.println
,所以根本不需要附加换行符!
我需要帮助来弄清楚发生了什么。 我是讲意大利语的人,所以我用意大利语命名了一些变量。 经过一段时间的无编码之后,我开始编写一些基本且简单的代码。我制作了一个名为 "Prova" 的 Class,它是一个计算器。 4 种方法:加、减、积和除。 前三种方法没有异常,后一种有。 我做了一个可运行的 class 并看到了一些奇怪的结果
代码如下:
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() 之外工作正常。我的问题是这里发生了什么?我看不到我做了什么 wronf
我看得出来您想将换行符 ('\n'
) 连接到您的结果。因为您要将结果作为 double
返回,所以您不能简单地将 '\n'
添加到结果中,因为它将使用其对应的 int
值 (10
)。这说明了为什么当您将 100
除以 1
然后添加 '\n'
.
110
要解决此问题,我会将 '\n'
更改为 "\n"
,这样您的结果将首先被强制转换为 String
。
此外,如果您决定除以分数的任何结果,您将 运行 变成意想不到的整数除法。参见:Why is the result of 1/3 == 0?
注意:因为您使用的是 System.out.println
,所以根本不需要附加换行符!