gpt4 book ai didi

java - java 使用快捷操作符执行操作的方式与常规操作符有什么不同吗?

转载 作者:行者123 更新时间:2023-12-01 06:27:12 25 4
gpt4 key购买 nike

我正在开发一个关于帕斯卡三角形的java程序。

这就是它的编码方式:

for(int i = 0; i < 5; i++){
for(int j = 0, x = 1; j <= i; j++){
System.out.print(x + " ");
x = x * (i - j) / (j + 1);
}
System.out.println();
}

它显示:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

但是当我尝试将代码更改为:

for(int i = 0; i < 5; i++){
for(int j = 0, x = 1; j <= i; j++){
System.out.print(x + " ");
x *= (i - j) / (j + 1);
}
System.out.println();
}

您可能已经注意到,只有运算符更改为 *=,但结果是:

1
1 1
1 2 0
1 3 3 0
1 4 4 0 0

知道发生了什么吗?提前致谢!

最佳答案

这是因为您以错误的顺序使用整数算术。

x *= (i - j) / (j + 1);

相同
x = x * ((i - j) / (j + 1));

括号很重要。 (i - j)/(j + 1) 在大多数情况下不是整数,但 java 无论如何都会将其四舍五入为整数。

你最初的做法

x = x * (i - j) / (j + 1);

乘法发生在除法之前,因此不会出现任何舍入错误。

关于java - java 使用快捷操作符执行操作的方式与常规操作符有什么不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1803854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com