2011-09-22 134 views
1

我在fortran中有這樣的東西。編寫Fortran程序的Java相當於

20: call TESTBEGIN(a,b,c) 
     if(c<1) goto 40 
30: call TESTMIDDLE(e,f,g) 
     if(g==1) goto 20 
40: return   

但我的代碼是這樣的

Subroutine testCase() 
20: CALL beginTest(a,b) 
    IF (b.EQ.-1) GOTO 999 
30: CALL middleTest(c,b) 
     IF (b.EQ.-1) GOTO 20 
40: CALL endTest(d,b) 
    IF (b.EQ.-1) GOTO 30 
    CALL LastTest(e,b) 
     IF (.b.EQ.-1) GOTO 40 
     DO I =1,j 
     DTEMP(j)=1.0 
    END DO 
some code 
999:return 

回答

1

類似的東西?

do 
{ 
    c = TESTBEGIN(a,b); 
    if (c < 1) break; 
    g = TESTMIDDLE(e,f); 
} while (g == 1); 

對於第二代碼片段嘗試一個狀態機:

for(int state = 1; state != 0;) 
{ 
    switch(state) 
    { 
    case 1: 
    state = (beginTest(a) == -1) ? 0 : 2; 
    break; 
    case 2: 
    state = (middleTest(c) == -1) ? 1 : 3; 
    break; 
    case 3: 
    state = (endTest(d) == -1) ? 2 : 4; 
    break; 
    case 4: 
    state = (lastTest(e) == -1) ? 3 : 5; 
    break; 
    } 
    case 5: 
    state = 0; 
// DO I =1,j // Honestly I don't know what does it do. 
//  DTEMP(j)=1.0 
    break; 
} 

或更好,嘗試重新考慮算法,我想你可以做到這一點更容易閱讀和理解使用Java。