将 C++ 中的二项式树转换为 Java
Converting Binomial Tree in C++ to Java
我有以下代码,我正在尝试将其从C++转换为Java。该代码应该生成一个二项式树,该树将用于计算股票期权价格。下面是以下C++代码:
class Price {
public:
double stockPrice;
double optionPrice;
};
int numIntervals = 500;
Price ** binomialTree;
binomialTree = new Price*[numIntervals+1];
for (i = 0; i <= numIntervals; i++) {
binomialTree[i] = new Price[i + 1];
}
for (i = 0; i <= numIntervals; i++) {
for (j = 0; j <= i; j++) {
binomialTree[i][j].stockPrice = sNaught * pow(up, j) * pow(down, i-j);
}
}
我需要初始化二项式树的 java 代码,以便我可以遍历它并计算各种价格。让我失望的部分是循环内部发生的binomialTree[i] = new Price[i+1];
,使 2D 数组动态,这是您在 Java 中无法做到的。这就是我想出的运行方法,但与给定的值相比,结果价格不正确。
class Price {
double stockPrice = 0.0;
double optionPrice = 0.0;
Price(double sP, double oP) {
this.stockPrice = sP;
this.optionPrice = oP;
}
}
int i,j;
Price[][] binomialTree = new Price[numIntervals+1][numIntervals+2];
for (i = 0; i <= numIntervals; i++) {
for (j = 0; j <= i; j++) {
binomialTree[i][j] = new Price(option.getsNought() * Math.pow(up, j) * Math.pow(down, i-j), 0);
}
}
行长度是动态的二维数组在 Java 中非常可能。由于我没有您的全部设置,因此这里有一个简短的示例:
Price[][] binomialTree = new Price[20][];
for ( int i = 0 ; i < 20 ; i++ ) {
binomialTree[i] = new Price[i+1];
}
for ( int i = 0; i < 20; i ++ ) {
System.out.println( Arrays.toString(binomialTree[i]));
}
它的输出是(因为我们还没有填充数组):
[空][空,空][空、空、空][空、空、空、空]...
值得注意的是,Java根本没有"二维数组"(从某种意义上说,所有维度都作为连续的内存块一起分配)。它所拥有的只是一维数组,其基类型可以是引用类型。引用类型可以是数组的类型。
声明,例如
Price[][] arr = new Price[5][7];
只是语法糖,其作用与创建对Price
数组的 5 元素引用数组相同,然后创建 5 个数组,其中包含 7 个对 Price
的引用,并将它们分配给第一个数组的每个元素。
有关此内容的正式讨论,请阅读 Java 语言规范。
相关文章:
- SWIG Java 在使用 -DSWIGWORDSIZE64 时将int64_t转换为 jlong
- 我需要帮助将我的代码从 c++ 转换为 java
- 将C++映射转换为 Java 映射
- 使用 jni 将返回带有模板的对象的 Java 代码转换为 c++
- C++ (U256)*(H256 const*)(char*[] + int) 将重写转换为 Java
- JNA 将 HICON 转换为 Java Image
- 从c++到java的矢量转换
- 如何将通过TCP发送数据的数据从C++转换为Java
- 如何将 Java double[][] 转换为 C++ <vector<vector>> JNI?
- 如何通过 JNI 将 java CharSequence 转换为 c++ char*
- 将 Java LinkedHashMap 转换为 C++ std::map
- 将本机C 代码转换为Java
- 在使用 JNI 将 c++ unordered_map转换为 java hashMap之前将其转换为 java hash
- 将 C++ 中的字符值转换为具有与 Java 中相同值的字符串
- 如何将 GLCM 的实现转换为 Java C++
- 将 C++ 中的结构转换为 Java 中的类
- 将 Java ArrayList 转换为 C++ 向量时出现问题
- FlatBuffers C++从缓冲区转换为对象,仅适用于root_type(而Java具有所有)
- 将 JNI -> jobject(基本上是 java 文件中的映射和/或映射的映射)转换为 std::map(c++)
- 使用正确的数据类型转换java中的c++方法逻辑