2016-04-02 15 views
0

だから私はすべてが点を除いて働いてきた私は、必要な入力を入力したら、私はこのような入力を取得:ループの検証と出力の問題

1 5.0 
2 6.0 
3 7.0 
4 8.0 

それはそのないようだと、私は私が間違ってやっているのか分かりません私が入力した成長率50に基づいて右増分で増加しています。また、翌日には生物数も増加しません。助言がありますか?あなたが行の整数形式としてgrowthRateの入力を取っている

//Purpose of program to predict population of organisms 

import java.util.Scanner; 

public class Population { 
    public static void main(String[] args) { 
     double growthRate = -1; 
     int population = 0; 
     int days = -1; 
     double popResult = 0; 

     Scanner keyboard = new Scanner(System.in); 

     System.out.println("\nEnter the starting number of organisms:"); 
     population = keyboard.nextInt(); 

     while (population < 2) { 
      System.out.println("\nError!! Please re-enter number of organisms."); 
      population = keyboard.nextInt(); 
     } 

     System.out.println("\nEnter rate of growth as percentage:"); 
     growthRate = keyboard.nextInt()/100; 

     while (growthRate < 0) { 
      System.out.println("\nError!! Growth rate must be a positive number. Please re-enter."); 
      growthRate = keyboard.nextInt(); 
     } 

     System.out.println("\nEnter number of days organisms will grow:"); 
     days = keyboard.nextInt(); 

     while (days < 0) { 
      System.out.println("\nError!! Number of days cannot be less than 1. Please re-enter."); 
      days = keyboard.nextInt(); 
     } 

     System.out.println("Days" + "\t" + "Organisms"); 
     System.out.println("------------------"); 

     popResult = population; 
     growthRate = growthRate/100; 

     for (int numberOfDays = 1; numberOfDays < days; numberOfDays++) { 
      System.out.println(numberOfDays + "\t" + popResult); 
      popResult = (popResult * growthRate) + popResult; 

     } 
    } 
} 
+0

'keyboard.nextInt()/ 100'は整数除算です。結果は常に整数になります。 'double'の結果が必要な場合は、オペランドの1つを' double'にキャストします。 – ajb

+0

私は問題を解決しますか? – Icodin

答えて

1

growthRate = keyboard.nextInt()/ 100。

それが0未満である場合、あなたはgrowthRate = keyboard.nextInt()

として100で割ることなく入力を取ります。

最後に、growthRateを growthRate = growthRate/100と再分類します。

したがって、whileループ以外の入力は、 growthRate = keyboard.nextInt();と入力する必要があります。

修正されたコード

import java.util.Scanner; 

public class Population 
{ 
    public static void main(String[] args) 
    { 
     double growthRate=-1; 
     int population=0; 
     int days=-1; 
     double popResult=0; 

     Scanner keyboard=new Scanner(System.in); 

     System.out.println("\nEnter the starting number of organisms:"); 
     population=keyboard.nextInt(); 

     while(population<2) 
     { 
      System.out.println("\nError!! Please re-enter number of organisms."); 
      population=keyboard.nextInt(); 
     } 

     System.out.println("\nEnter rate of growth as percentage:"); 
     growthRate=keyboard.nextInt(); 

     while(growthRate<0) 
     { 
      System.out.println("\nError!! Growth rate must be a positive number. Please re-enter."); 
      growthRate=keyboard.nextInt(); 
     } 

     System.out.println("\nEnter number of days organisms will grow:"); 
     days=keyboard.nextInt(); 

     while(days<0) 
     { 
      System.out.println("\nError!! Number of days cannot be less than 1. Please re-enter."); 
      days=keyboard.nextInt(); 
     } 

     System.out.println("Days" + "\t" + "Organisms"); 
     System.out.println("------------------"); 

     popResult=population; 
     growthRate=growthRate/100; 

     for(int numberOfDays=1; numberOfDays<days; numberOfDays++) 
     { 
      System.out.println(numberOfDays + "\t" + popResult); 
      popResult=(popResult * growthRate) + popResult; 

     }}} 
+0

ありがとうございました。私が今実行している問題は、それが4日しか出力しない日数を5と入力すると言うことですか? – Icodin

+0

これをforループのint numberOfDays = 1に使用します。 numberOfDays <= days; numberOfDays ++ –

+0

わかりません。 numberOfDays = 0に設定する必要がありますか? – Icodin