2014-11-03 2 views
0

Я получаю ошибки компилятора, которые, кажется, указывают точку с запятой в конце двух операторов, и я понятия не имею, как исправить проблему. Цель состоит в том, чтобы принимать значения из класса Enum в Java и использовать их в финансовых расчетах с двухмерными массивами.Два размерных массива с BigDecimal в Java

public enum User 
{ 
Mike("Mike", "User", 8000, 0.03, 15, 25), 
Jim("Jim", "User", 12000, 0.05, 12, 30), 
Jane("Jane", "User", 9000, 0.02, 18, 25), 
Mary("Mary", "User", 18000, 0.09, 5, 30); 
Bill("Bill", "User", 14000, 0.06, 8, 30); 


private final String firstName; 
private final String lastName; 
private final int annualDeposit; 
private final double annualIntRate; 
private final int yearsToDeposit; 
private final int yearsToCalcInt; 


User(String firstName, String lastName, int annualDeposit, double annualIntRate, 
int yearsToDeposit, int yearsToCalcInt) 
{ 
this.firstName = firstName; 
this.lastName = lastName; 
this.annualDeposit = annualDeposit; 
this.annualIntRate = annualIntRate; 
this.yearsToDeposit = yearsToDeposit; 
this.yearsToCalcInt = yearsToCalcInt; 
} 

public String getFirstName() 
{ 
return firstName; 
} 

public String getLastName() 
{ 
return lastName; 
} 

public int getAnnualDeposit() 
{ 
return annualDeposit; 
} 

public double getAnnualIntRate() 
{ 
return annualIntRate; 
} 

public int getYearsToDeposit() 
{ 
return yearsToDeposit; 
} 

public int getYearsToCalcInt() 
{ 
return yearsToCalcInt; 
} 

} 

import java.util.EnumSet; 
import java.math.BigDecimal; 
import java.text.NumberFormat; 

public class Work 
{ 
public static void main(String[] args) 
{ 

int[] annualDeposit = new int[5]; 
double[] intRate = new double[5]; 
int[] yearsToDeposit = new int[5]; 
int[] yearsToCalcInt = new int[5]; 

BigDecimal[][] accountBalance = new BigDecimal[5][30]; 
BigDecimal[][] principal = new BigDecimal[5][30]; 

int count = 0; 
int yearsDeposit = 0;  

for (User user: User.values()) 
{ 
annualDeposit[count] = user.getAnnualDeposit(); 
intRate[count] = user.getAnnualIntRate(); 
yearsToDeposit[count] = user.getYearsToDeposit(); 
yearsToCalcInt[count] = user.getYearsToCalcInt(); 
count++; 
}  

for (int i = 0; i < 5; i++) 
{ 
yearsDeposit = 0;   
for (int year = 0; year <= yearsToCalcInt[i]; year++) 
{ 
if(yearsDeposit <= yearsToDeposit[i]) 
{ 
principal[i][year] += annualDeposit[i] + accountBalance[i][year]; 
BigDecimal accountBalance[i][year] = 
principal[i][year].multiply(intRate[i].add(BigDecimal.ONE).pow(year)); 

yearsDeposit++; 
} 
else 
{ 
principal[i][year] += accountBalance[i][year]; 
BigDecimal accountBalance[i][year] = 
principal[i][year].multiply(intRate[i].add(BigDecimal.ONE).pow(year)); 
} 
}  
} 


} 
} 
+0

'Mary' заканчивается'; '...? – MadProgrammer

+0

и, хотя не по теме, это не очень хорошая идея сделать учащихся перечислимыми. –

ответ

1

Mary заканчивается ;, который Java берет означает, что больше нет записей для enum ...

public enum User { 

    Mike("Mike", "User", 8000, 0.03, 15, 25), 
    Jim("Jim", "User", 12000, 0.05, 12, 30), 
    Jane("Jane", "User", 9000, 0.02, 18, 25), 
    Mary("Mary", "User", 18000, 0.09, 5, 30); <--- Culprit here... 
    Bill("Bill", "User", 14000, 0.06, 8, 30); 

Изменить его , вместо ...

public enum User { 

    Mike("Mike", "User", 8000, 0.03, 15, 25), 
    Jim("Jim", "User", 12000, 0.05, 12, 30), 
    Jane("Jane", "User", 9000, 0.02, 18, 25), 
    Mary("Mary", "User", 18000, 0.09, 5, 30), 
    Bill("Bill", "User", 14000, 0.06, 8, 30); 

Nit Пика: Конвенция гласит, что перечисляемые литералы должны быть в верхнем регистре

public enum User { 

    MIKE("Mike", "User", 8000, 0.03, 15, 25), 
    JIM("Jim", "User", 12000, 0.05, 12, 30), 
    JANE("Jane", "User", 9000, 0.02, 18, 25), 
    MARY("Mary", "User", 18000, 0.09, 5, 30), 
    BILL("Bill", "User", 14000, 0.06, 8, 30); 

См Code Conventions for the Java TM Programming Language для получения более подробной информации

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