Java Math.min(Math.max(x,0),8)这是什么意思?

Java Math.min(Math.max(x,0),8)这是什么意思?,java,Java,我正在查看“我的”数独Android应用程序的数独代码,我注意到以下代码: selX = Math.min(Math.max(x, 0), 8); selY = Math.min(Math.max(y, 0), 8); Math.min(Math.max(x,0),8)和Math.min(Math.max(y,0),8)的意思是什么?首先取x和0的最大值,如果x8,那么min(x,8)等于8。如果x

我正在查看“我的”数独Android应用程序的数独代码,我注意到以下代码:

selX = Math.min(Math.max(x, 0), 8);
selY = Math.min(Math.max(y, 0), 8);

Math.min(Math.max(x,0),8)
Math.min(Math.max(y,0),8)
的意思是什么?

首先取x和0的最大值,如果x<0,则为零

接下来取结果和8中的最小值,因此最大值为8

这与:

  int selX = x;
  if (selX < 0) selX = 0;
  if (selX > 8) selX = 8;
int selX=x;
如果(selX<0)selX=0;
如果(selX>8)selX=8;

intselx=(x<0)?0:((x>8)~8:x);

如果x介于0和8之间,则第一个返回x;如果x小于0,则返回0;如果x大于8,则返回8

第二个类似的方式工作。所以基本上你得到的是一个保证在0到8之间的数字


Java详细描述了
min
max
函数的功能。

数独的意思是9 x 9个正方形。您可以将它们从0索引到8。Math.min(Math.max(x,0),8)保证得到该范围内的数字。如果x>8,那么min(x,8)等于8。如果x<0,则max(x,0)使其为0。仅此而已。

使用文档逐步分解:

max(int a,int b)返回两个int值中的较大值

min(int a,int b)返回两个int值中较小的一个

所以Math.min(Math.max(x,0),8);细分为:

int max=Math.max(x,0)


int final=数学最小值(最大值为8)

逻辑地考虑一下,它需要最小值8,最大值x和0。如果x为负,则结果为0;如果x为正且小于8,则结果为x;如果x是正的并且大于8,那么结果将是8。看,long)max(int i1,int i2)返回两个参数中最正的(最接近正无穷大)。min(inti1,inti2)返回两个参数中最负的(最接近负无穷大)。这可能会有帮助
  int selX = (x < 0) ? 0 : ((x > 8) ? 8 : x);