java中一个小问题的疑惑

来源:百度知道 编辑:UC知道 时间:2024/05/28 10:07:48
懂java的人来看看哈,我一直有一个疑惑,首先请看下面这个简单的程序:
public class LotteryArray
{
public static void main(String [] args)
{
final int MAX=10;
int[][] odds=new int[MAX+1][];
for(int i=0;i<=MAX;i++)
odds[i]=new int[i+1];
for(int i=0;i<=MAX;i++)
for(int j=0;j<odds[i].length;j++)
{
odds[i][j]=1;
for(int k=1;k<=j;k++)
odds[i][j]=odds[i][j]*(i-k+1)/k;
}
for(int[] row:odds)
{
for(int n:row)
System.out.printf("%4d",n);
System.out.println();
}
}
}
这里是建立了一个不规则的数组,运行结果如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
这个结果是正确的,但是如果将程序的第14行,即“odds[i][j]=odds[i][j]*(i-k+1)/k;"改为:odds[i]

是运算优先级的问题
odds[i][j]=(odds[i][j]*(i-k+1)/k)
odds[i][j]*=(i-k+1)/k==>odds[i][j]=(odds[i][j]*((i-k+1)/k))
明白了?

你说的这个还真没见到过
你就老老实实写成a=a×b 呗
要想知道 你就 自己做个实验
定义a,b 自己找简单点的例子
看看
1.a=a×b,a×=b 的结果是不是一样
2.试试 a=a+b,a+=b,看看+号是不是一样的结果
3.加括号试试 (a×)=b 虽然我感觉优先级没有问题
还解决不了其他我也就不知道了呵呵
我没用过×法这样算过呵

odds[i][j]*=(i-k+1)/k ==> odds[i][j]=odds[i][j]*((i-k+1)/k)
明白没