2013-04-11 2 views
0

Я пытаюсь преобразовать один размерный массив в многомерный массив. Преобразуйте существующее пакетное приложение процентного калькулятора из нескольких одномерных массивов в 1 многомерный массив. Используйте следующий тип данных: double [] []; Подсказка. Максимальное количество наборов данных (5) будет вашей строкой, и каждый массив данных (из исходного пакета InterestCalculatorBatch) (7) будет столбцом. 2. Все данные будут содержаться в одном многомерном массиве . 3. Измените методы sortBySimple и displayInterest для принятия одного многомерного массива вместо нескольких одномерных массивовпреобразование одномерного массива в многомерный массив

Я установил displayInterest, чтобы принять один многомерный массив. Я просто смущен, если у меня есть sortBySimple правильно настроен, и когда программа вычисляет интерес, если мне нужно исправить или сохранить их как есть. Спасибо вам за помощь.

import java.util.Scanner; 
public class InterestCalculatorBatchMDA { 
public static void main(String[] args) 
{ 
    int cnt = 0; 
    double[][] arrPrincipalAmt = new double[5][7]; 
    double[][] arrInterestRate = new double[5][7]; 
    double[][] arrTerm = new double[5][7]; 
    double[][] arrSimple = new double[5][7]; 
    double[][] arrCompoundMonthly = new double[5][7]; 
    double[][] arrCompoundDaily = new double[5][7]; 
    double[][] arrCompoundWeekly = new double[5][7]; 


    do{ 
     arrPrincipalAmt[cnt] = getPrincipalAmount(1); 
     arrInterestRate[cnt] = getInterestRate(1); 
     arrTerm[cnt] = getTerm(1); 

     arrSimple[cnt] =   round(calculateSimpleInterest(arrPrincipalAmt[cnt], arrInterestRate[cnt], arrTerm[cnt]),5); 
     arrCompoundMonthly[cnt] = round(calculateCompoundInterest(arrPrincipalAmt[cnt], arrInterestRate[cnt],arrTerm[cnt] ,12.0),5); 
     arrCompoundWeekly[cnt] = round(calculateCompoundInterest(arrPrincipalAmt[cnt], arrInterestRate[cnt], arrTerm[cnt], 52.0),5); 
     arrCompoundDaily[cnt] = round(calculateCompoundInterest(arrPrincipalAmt[cnt], arrInterestRate[cnt], arrTerm[cnt], 365.0),5); 

     cnt++; 
    }while (cnt < 5 && askYesNo("Enter another set of data (Yes/No):")); 

    displayInterest(arrPrincipalAmt,arrInterestRate,arrTerm,arrSimple,arrCompoundMonthly,arrCompoundWeekly,arrCompoundDaily,cnt); 
    sortBySimple(arrPrincipalAmt,arrInterestRate,arrTerm,arrSimple,arrCompoundMonthly,arrCompoundWeekly,arrCompoundDaily,cnt); 
    displayInterest(arrPrincipalAmt,arrInterestRate,arrTerm,arrSimple,arrCompoundMonthly,arrCompoundWeekly,arrCompoundDaily,cnt); 

} 


/** Round **/ 
    public static double round(double numb1, double numb2) { 
    double round = ((double) Math.round(numb1*(Math.pow(10, numb2)))/(Math.pow(10, numb2)));; 
    return round; 
    } 

    /** Calculate Simple **/ 
    public static double calculateSimpleInterest(double numb1, double numb2, double numb3) { 
    double calculateSimpleInterest = ((numb1)*(numb2/100.0)*(numb3/12.0)); 
    return calculateSimpleInterest; 
    } 

    /** Calculate Compounded Daily **/ 
    public static double calculateCompoundInterest(double numb1, double numb2, double numb3, double numb4) { 
    double calculateCompoundInterest = (numb1*Math.pow((1.0+((numb2/100.0)/numb4)),(numb4*(numb3/12.0))))-numb1; 
    return calculateCompoundInterest; 
    } 

    /** Get principal amount **/ 
    public static double getPrincipalAmount(double numb1) { 
     Scanner input = new Scanner(System.in); 
     double numb2 = 1; 
    do{System.out.print("Enter Loan Amount: "); 
     numb2 = input.nextDouble(); 
     if(numb2 > 0); 

      else{ 
        System.out.println("Data Error: Loan amount must be greater than zero. You entered " +numb2); 
      }  
      }while (numb2 < 0); 
    return numb2; 
    } 

    /** Get interest rate **/ 
    public static double getInterestRate(double numb1) { 
     Scanner input = new Scanner(System.in); 
     double numb2=1; 
     do{System.out.print("Enter Yearly Interest Rate (1 to 100 percent): "); 
     numb2 = input.nextDouble(); 
     double getInterestRate = 0; 
    if (numb2 >= 0 && numb2 <= 100) 
     getInterestRate = numb2; 
      else{ 
        System.out.println("Data Error: Interest rate must be greater than or equal to zero and less than or equal to 100. You entered " +numb2); 
      }  
      }while (numb2 <= 0 || numb2 >= 100); 
    return numb2; 
    } 

    /** Get term **/ 
    public static double getTerm(double numb1) { 
     Scanner input = new Scanner(System.in); 
     double numb2=1; 
     do{System.out.print("Enter the Term (in months): "); 
     numb2 = input.nextInt(); 
     double getTerm = 0; 
     if (numb2 > 0) 
     getTerm = numb2; 
      else{ 
        System.out.println("Data Error: Loan amount must be greater than zero. You entered " +numb2); 
      }  
      }while (numb2 <= 0); 
    return numb2; 
    } 

    /** Sort by simple interest **/ 
    public static void sortBySimple(double[][] arrPrincipalAmt ,double[][] arrInterestRate, double[][] arrTerm, double[][] arrSimple, double[][] arrCompoundMonthly, double[][] arrCompoundWeekly, double[][] arrCompoundDaily, double count){ 
     for(int i = 0;i<count;i++) 
     { 
     for(int j=i+1; j<count;j++) 
     { 
     if(arrSimple[i][j] < arrSimple[i][j]) 
     { 
     double temp = arrSimple[i][j]; 
     arrSimple[i][j] = arrSimple[i][j]; 
     arrSimple[i][j] = temp; 

     double temp1 = arrPrincipalAmt[i][j]; 
     arrPrincipalAmt[i][j] = arrPrincipalAmt[i][j]; 
     arrPrincipalAmt[i][j] = temp1; 

     double temp2 = arrInterestRate[i][j]; 
     arrInterestRate[i][j] = arrInterestRate[i][j]; 
     arrInterestRate[i][j] = temp2; 

     double temp3 = arrTerm[i][j]; 
     arrTerm[i][j] = arrTerm[i][j]; 
     arrTerm[i][j] = temp3; 

     double temp4 = arrSimple[i][j]; 
     arrSimple[i][j] = arrSimple[i][j]; 
     arrSimple[i][j] = temp4; 

     double temp5 = arrCompoundMonthly[i][j]; 
     arrCompoundMonthly[i][j] = arrCompoundMonthly[i][j]; 
     arrCompoundMonthly[i][j] = temp5; 

     double temp6 = arrCompoundDaily[i][j]; 
     arrCompoundDaily[i][j] = arrCompoundDaily[i][j]; 
     arrCompoundDaily[i][j] = temp6; 

     double temp7 = arrCompoundWeekly[i][j]; 
     arrCompoundWeekly[i][j] = arrCompoundWeekly[i][j]; 
     arrCompoundWeekly[i][j] = temp7; 
     } 
     } 
     } 
    } 

    /** Display Interest **/ 
    public static void displayInterest(double[][] amt ,double[][] interest, double[][] term, double[][] simple, double[][] monthly, double[][] weekly, double[][] arrCompoundDaily, int count){ 
    int i=0; 
    System.out.println("[Line #] [Principal Amount] [Interest Rate] [Term] [Simple Interest] [Compound Monthly] [Compound Weekly] [Compound Daily]"); 
    do{ 
    System.out.print((i+1)+"    "); 
    System.out.print(amt[i][i]+"    "); 
    System.out.print(+interest[i][i]+"   "); 
    System.out.print(+ term[i][i]+"   "); 
    System.out.print(+simple[i][i]+"   "); 
    System.out.print(+monthly[i][i]+"   "); 
    System.out.print(+weekly[i][i]+"   "); 
    System.out.println(+arrCompoundDaily[i][i]); 
    i++; 
    }while(i < count); 
    } 

    /**ask yes or no **/ 
    public static boolean askYesNo(String question) { 
     Scanner input = new Scanner(System.in); 
     String enteredText; 
     boolean isAnswerValid; 

     do{ 
      isAnswerValid = false; 
      System.out.println(question); 
      enteredText = input.nextLine(); 

      if (enteredText.length() > 0) 
      { 
       enteredText = enteredText.toUpperCase(); 

       if(enteredText.equals("YES") || enteredText.equals("Y") || enteredText.equals("NO") || enteredText.equals("N")) 
       { 
        isAnswerValid = true; 
       } 
      } 

      if(isAnswerValid == false) 
      { 
       System.out.println("Please enter 'Yes' or 'No'?"); 
      } 

     } while(isAnswerValid == false); 

     if(enteredText.equals("YES") || enteredText.equals("Y")) 
     { 
      return true; 
     } 

     return false; 
    } 

} 
+0

Это не похоже на проблему программирования, похоже, что вы не полностью понимаете этот вопрос и, возможно, можете отправить об этом своему профессору. – RyPope

ответ

0

Ваш код выглядит как попытка написать C на Java. Java - это язык OO, и у вас будет гораздо больше успеха, если вы разрабатываете и записываете свои программы в , используя. Структуры данных, которые «размазаны» по нескольким массивам, как это, принципиально неудобны.

Первое, что вам нужно сделать, чтобы исправить это, - создать класс, представляющий запись в массивах.

Попытка исправить программу при сохранении текущей «размытой» структуры структуры данных ... быть тупой ... пустой тратой времени.

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