gpt4 book ai didi

java - VBA 到 Java 转换循环

转载 作者:行者123 更新时间:2023-12-01 13:27:09 24 4
gpt4 key购买 nike

这是原始的vba代码:

For i = 0 To M
St(i) = i * dS '
C(N, i) = Max(0, z * (St(i) - X))
Next
For j = N - 1 To 0 Step -1
For i = 1 To M - 1
pu = 0.5 * (v ^ 2 * i ^ 2 + b * i) * dt
pm = 1 - v ^ 2 * i ^ 2 * dt
pd = 0.5 * (v ^ 2 * i ^ 2 - b * i) * dt

C(j, i) = Df * (pu * C(j + 1, i + 1) + pm * C(j + 1, i) + pd * C(j + 1, i - 1))
If AmeEurFlag = "a" Then
C(j, i) = Max(z * (St(i) - X), C(j, i))
End If
Next
If z = 1 Then
C(j, 0) = 0
C(j, M) = (St(i) - X)
Else
C(j, 0) = X
C(j, M) = 0
End If
Next

我想转换为java,这是我的代码:

for (int i = 0; i < M; i++) 
{
St[i] = i * dS;
C[(int) N][i] = Math.max(0, z * (St[i] - X));
}


for (int j = (int) (N - 1); j < 0; j--)
{
for (int i = 1; i < M-1; i++)
{
pu = 0.5 * (Math.pow(v, 2) * Math.pow(i, 2)+ b * i) * dt;
pm = 1 - Math.pow(v, 2) * Math.pow(i, 2)* dt;
pd = 0.5 * (Math.pow(v, 2)* (Math.pow(i, 2) - b * i) * dt);

C[j] [i] = Df * (pu * C[j + 1] [i + 1] + pm * C[j + 1] [i] + pd * C[j + 1] [i - 1]);
if (AmeEurFlag == "a" )
{
C[j] [i] = Math.max(z * (St[i] - X), C[j][i]);

}
}

if (z == 1)
{
C[j][0] = 0;
C[j][M] = (St[i] - X);
}
else
{
C[j][0] = X;
C[j][M] = 0;

}
}

这行有一个错误 C[j][M] = (St[i] - X);因为没有“i”变量。我已经脱离了第一个循环。所以 eclipse 说你应该创建一个变量。在vba中,我可以创建一个变量开头的代码,例如:“Dim i As Integer”,但在java中这可能吗?我怎么解决这个问题?提前致谢

最佳答案

在 for 循环之前声明 i。由于这是一个 Java 问题,因此该语言中的 for 循环有很大不同,您必须考虑范围。

int i;
for (i = 1; i < M-1; i++)
{
}
//i retains its value here

原因是在 VBA 中,i 一旦初始化就保留在范围内。在 Java for 循环中,该变量在完成后将被销毁,除非事先声明了该变量。 VB 让我很头疼,因为 i 在代码中被频繁重用。

关于java - VBA 到 Java 转换循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21756990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com