2014-01-24 8 views
0

В принципе, существует группа из 20 овец. После того, как группа выросла до 80 овец, группа больше не нуждается в надзоре. Число овец, N, каждый год, т, встречается с:для Loop in Java - экспоненты

N = 220/(1 + 10 (0,83)^т)

Эта программа пытается выяснить, сколько лет овцы чтобы контролировать и записывать значение N для t, начиная с нуля и увеличиваясь до 25.

Это мой код до сих пор ... он, похоже, не работает, и я знаю, что есть что-то делать с часть о умножении на мощность. Я пытаюсь использовать переменную «мощность», которая умножается на 0,83 на каждой итерации цикла. Любая помощь приветствуется, спасибо.

public static void main(String[] args) { 

    System.out.println("A breeding group of 20 bighorn sheep is released in a protected area in Colorado."); 
    System.out.println("After the group has reached a size of 80 sheep, the group does not need to be supervised anymore."); 
    System.out.println("This program calculates how many years the sheep have to be supervised."); 
    int number = 20; 
    int power = 1; 
    for(int years = 0; number < 80; power*= 0.83) { 
     number = 220/(1 + 10 * power);   
     System.out.println("After " + years + " years, the number of sheep is: " + number); 
     years++; 
    } 
} 
} 
+5

Выполнение всех ваших вычислений с помощью целых чисел, когда вы должны использовать 'double'. При первом запуске 'power * = 0.83' значение' power' равно нулю. –

+2

Что именно вы подразумеваете под этим, похоже, не работает? – fedorSmirnov

+1

Я бы использовал [Math.pow (double, double)] (http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#pow%28double,%20double%29) , –

ответ

2

изменить свои типы данных по количеству и мощности от int до double. Я попробовал, и он работает правильно. Вы также можете захотеть изменить цикл for для работы в летних периодах < 25 вместо номера < 80. И сделайте номер локальной переменной внутри цикла для чистоты.

public static void main(String[] args) { 
    System.out.println("A breeding group of 20 bighorn sheep is released in a protected area in Colorado."); 
    System.out.println("After the group has reached a size of 80 sheep, the group does not need to be supervised anymore."); 
    System.out.println("This program calculates how many years the sheep have to be supervised."); 
    double power = 1; 
    boolean foundFirstOverEighty = false; 
    for (int years = 0; years < 25; years++) { 
     double number = 220/(1 + 10 * power); 
     System.out.println("After " + years + " years, the number of sheep is: " + number); 

     if (!foundFirstOverEighty && number >= 80) { 
      System.out.println("First time number of sheep exceeded eighty. " + years + " years. number of sheep is: " + number); 
      foundFirstOverEighty = true; 
     } 

     power *= 0.83; 
    } 
} 
+0

Спасибо, что помогло много, но мне интересно, как я могу извлечь точный год, когда овцы впервые пришли за 80? – Freedom

+1

:) добавлено первое более 80 чеков – user2684301

+0

thx: D !!!!!!!! – Freedom