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

时间:2014-02-18 16:30:30

标签: 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)的含义是什么?

4 个答案:

答案 0 :(得分:1)

使用文档逐步分解:

http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#max(long

  

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

     

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

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

int maximum = Math.max(x,0);

int final = Math.min(最大值,8);

答案 1 :(得分:0)

首先取x和0的最大值,所以如果x< 0,它将为零。

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

大致相同:

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

  int selX = (x < 0) ? 0 : ((x > 8) ? 8 : x);

答案 2 :(得分:0)

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

第二个以类似的方式工作。所以基本上你得到的数字肯定在0到8之间,包括在内。

Java Math class详细说明了minmax函数的功能。

答案 3 :(得分:0)

Sudoku意味着9 x 9个方块。您可以将它们从0到8编入索引.Math.min(Math.max(x,0),8)保证您获得该范围内的数字。是x>然后min(x,8)使其为8.如果x <0。 0然后max(x,0)使它为0.这就是全部。