2017-02-23 26 views
0

мое назначение просто на самом деле. кто-то вводит номер для своего дохода, если его под 9000, он облагается налогом на 10%, более того, его 15% и т. д.Как вычислить диапазоны чисел с помощью массива?

, но тогда в одном из требований говорится: «Вы организуете диапазоны доходов как массив в каждом метод и выберите запись массива для расчета конкретного налога в налоговой скобке «

как это будет работать? не массивы принимают только определенные значения, а не диапазоны значений?

это мой код до сих пор

public static int calcTax(int status, int income) 
{ 
     if (status == 0) 
     { 
     return singleFiling(income); 
     } 
     if (status == 1) 
     { 
     return jointFiling(income); 
     } 
     if (status == 2) 
     { 
     return headFiling(income); 
     } 
     else 
      System.out.println("Error: invalid status. Enter a number between 0 to 2 only."); 
    return income; 

     } 

static int ninek = 9075; 
static int thrirtysixk = 36900; 
static int eightyninek = 89350; 
static int oneeightysixk = 186350; 
static int fourofivek = 405100; 
static int fourosixk = 406750; 
static int eighteenk = 18150; 
static int seventythreek = 73800; 
static int onefortyeightk = 148850; 
static int twotwentysixk = 226850; 
static int fourfivesevenk = 457600; 
static int twelveninefifty = 12950; 
static int fourninek = 49400; 
static int onetwentysevenk = 127550; 
static int twoosixk = 206600; 
static int fpurthreetwok = 432200; 

static double tax = 0; 
static int singleFiling(double userIncome) 
{ 
    if (userIncome >= 1 && userIncome <= ninek) 
     tax = userIncome * 0.10;  

System.out.println("Your payable Federal tax is: " + tax); 

return 0; 
} 
static int jointFiling(double userIncome) 
    { 
     if (userIncome >= 1 && userIncome <= oneeightysixk) 
      tax = userIncome * 0.10;  

    System.out.println("Your payable Federal tax is: " + tax); 

    return 0; 
    } 
    static int headFiling(double userIncome) 
    { 
     if (userIncome >= 1 && userIncome <= twelveninefifty) 
      tax = userIncome * 0.10;  

    System.out.println("Your payable Federal tax is: " + tax); 

    return 0; 
    } 
} 
+2

считают, что два массива для дохода и один для ставки налога, индекс соответствующего массива доходов соответствует индексу для ставки налога, например. доход [0] == 9000 taxrate [0] == 12.5 –

+0

вы также можете взять 'массив' и рассчитать' налог' относительно 'индекса массива' и сохранить' налог' в этот 'массив index' –

+0

, поэтому код будет что-то вроде if (userIncome> = 1 && userIncome <= доход [0]) tax = userIncome * taxrate [0]; будет ли это работать? –

ответ

0

Принимая замечания во внимание, что ваш код может выглядеть следующим образом:

static int[] incomeLevel = new int[]{9075, 186350, 12950}; 
static double[] taxRate = new double[]{.1, .15, .2} 

static double tax = 0.0; 

public static int calcTax(int status, int income) { 
    if (status < 0 || status > 2) { 
     System.out.println("Error: invalid status. Enter a number between 0 to 2 only.") 
     return income; 
    } 
    if (income > 0 && income <= incomeLevel[status]) 
     tax = income * taxRate[status]; 
    System.out.println("Your payable Federal tax is: " + tax) 
    return 0; 
} 

Конечно другие значения для уровней дохода должны были добавлены , то же самое для ставок налога.

Вместо вычисления каждого значения в другом методе, выбирая значение status, вы можете использовать его как индекс массива. Это имеет то преимущество, что нужен только код один раз вместо трех раз, но с некоторыми другими значениями.

Теперь вам нужно только проверить, находится ли ваш статус в требуемом диапазоне.