2014-02-13 4 views
0

Вот исходный код VBA:VBA для Java преобразовать петли

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 это возможно? Как я могу решить эту проблему? Заранее благодарим

+0

что 'i' ссылается на ?? это петля? –

+0

Этот вопрос не соответствует теме, потому что речь идет о базовом синтаксисе Java, который рассматривается в любом учебнике. – chrylis

+0

На самом деле я не уверен, но в коде VBA он используется только в циклах и создает начало кода. «Может быть, Dim i As Integer» дает значение по умолчанию, например 0? –

ответ

1

Заявить прямо перед циклом. Поскольку это вопрос Java, цикл for резко отличается на этом языке, и вам нужно подумать о области.

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

Причина в VBA i остается в области, как только она инициализируется. Где в цикле Java for эта переменная уничтожается по завершении, если она не была объявлена ​​ранее. VB дал мне головные боли из-за этого, поскольку я часто использую код.

Смежные вопросы