现在的位置: 首页 > 综合 > 正文

Think in java 答案_Chapter 4_Exercise 20

2013年02月20日 ⁄ 综合 ⁄ 共 1569字 ⁄ 字号 评论关闭

 阅前声明: http://blog.csdn.net/heimaoxiaozi/archive/2007/01/19/1487884.aspx

/****************** Exercise 20 *****************
* Repeat Exercise 19 for a three-dimensional
* array.
***********************************************/

public class E20_ThreeDDoubleArray {
  public static double[][][] threeDDoubleArray(
    int xLen, int yLen, int zLen,
    double valStart, double valEnd){
    double[][][] array =
      new double[xLen][yLen][zLen];
    double increment =
      (valEnd - valStart)/(xLen * yLen * zLen);
    double val = valStart;
    for(int i = 0; i < array.length; i++)
      for(int j = 0; j < array[i].length; j++)
        for(int k = 0; k < array[i][j].length; k++) {
          array[i][j][k] = val;
          val += increment;
        }
    return array;
  }
  public static
  void printArray(double[][][] array) {
    for(int i = 0; i < array.length; i++) {
      for(int j = 0; j < array[i].length; j++) {
        for(int k = 0; k < array[i][j].length; k++)
          System.out.println(" " + array[i][j][k]);
        System.out.println();
      }
      System.out.println();
    }
  }
  public static void main(String args[]) {
    double[][][] threeD =
      threeDDoubleArray(4, 6, 2, 47.0, 99.0);
    printArray(threeD);
    System.out.println("**********************");
    double[][][] threeD2 =
      threeDDoubleArray(2, 2, 5, 47.0, 99.0);
    printArray(threeD2);
    System.out.println("**********************");
    double[][][] threeD3 =
      threeDDoubleArray(9, 5, 7, 47.0, 99.0);
    printArray(threeD3);
  }
}

//+M java E20_ThreeDDoubleArray

**As complex as this might seem, it’s still vastly simpler than doing it in C or C++, and you get array bounds checking built in. In C/C++, if you ran off the end of a mult-dimenstional array, there was a good chance you wouldn’t catch the error.

抱歉!评论已关闭.