2014-01-28 38 views
2

我在每次循环运行时更新总数时遇到问题。 我一直在使用值2,50和5来检查我的工作。 总数应该是:3,4.5,6.75,10.125,15.1875,但我能得到的只是第一个总数。在Java循环中更新总数

任何帮助非常感谢!谢谢!!

这里是我的代码:

import java.util.Scanner; 

public class Population 
{ 

public static void main(String[] args) 
{ 
    int startingOrganisms; 
    int dailyPopulation; 
    int daysMultiply; 
    double dailyTotal = 0; 
    double dailyTotal2 = 0; 
    double dailyTotal3 = 0; 

    Scanner keyboard = new Scanner(System.in); 

    System.out.println("Starting # of Organisms:"); 
    startingOrganisms = keyboard.nextInt(); 

    System.out.println("Daily Population Increase(%):"); 
    dailyPopulation = keyboard.nextInt(); 

    System.out.println("# of Days They'll Multiply:"); 
    daysMultiply = keyboard.nextInt(); 

    for (int i = 1; i<=daysMultiply; i++) 
    { 
     dailyTotal = startingOrganisms*dailyPopulation*.01; 
     dailyTotal2 = startingOrganisms + dailyTotal; 
     System.out.println("Population for day " + i + " = " + dailyTotal2); 
    } 

} 

} 

回答

1

按你的逻辑,它看起来的效果就像你想通过改变startingOrganisms值作为你循环的循环。

鉴于你的输入值:2, 50 and 5,其结果是:3, 4.5, 6.75, 10.125, 15.1875,一个粗略的猜测startingOrganisms应分配dailyTotal2

首先改变的值将改变startingOrganisms数据类型。

double startingOrganisms; 

下一步将内改变其价值循环:

for (int i = 1; i <= daysMultiply; i++) { 
      dailyTotal = startingOrganisms * dailyPopulation * .01; 
      dailyTotal2 = startingOrganisms + dailyTotal; 
      startingOrganisms = dailyTotal2; 
      System.out.println("Population for day " + i + " = " + dailyTotal2); 
     } 

或更好,把startingOrganisms为您dailyTotal2计数器持有的更新值和增量:

for (int i = 1; i <= daysMultiply; i++) { 
      dailyTotal = startingOrganisms * dailyPopulation * .01; 
      startingOrganisms = startingOrganisms + dailyTotal; 
      //startingOrganisms = dailyTotal2 
      System.out.println("Population for day " + i + " = " + startingOrganisms); 
     } 

上述两种情况的结果都是您所期望的:

Starting # of Organisms: 
2 
Daily Population Increase(%): 
50 
# of Days They'll Multiply: 
5 
Population for day 1 = 3.0 
Population for day 2 = 4.5 
Population for day 3 = 6.75 
Population for day 4 = 10.125 
Population for day 5 = 15.1875 
+0

谢谢!这帮助了很多! :) – user2970463

+0

@ user2970463不客气 – PopoFibo

2

你只能得到你计算它只有一次的第一共图大业!

你应该阅读来自用户的输入,并在一个循环计算:

while(daysMultiply != -1){ // when the user wants to quit he'll enter -1, for example 
    daysMultiply = keyboard.nextInt(); 
    dailyTotal = 0; 
    dailyTotal2 = 0; 
    for (int i = 1; i<=daysMultiply; i++) 
    { 
     dailyTotal = startingOrganisms*dailyPopulation*.01; 
     dailyTotal2 = startingOrganisms + dailyTotal; 
     System.out.println("Population for day " + i + " = " + dailyTotal2); 
    } 
} 
0

您每天都是根据原始人口进行计算,而不是以当前人口计算。尝试调整计算中使用目前的人口十倍的增长因素:

growth = dailyTotal*dailyPopulation*.01; 
dailyTotal dailyTotal + growth; 

或在一行

dailyTotal = dailyTotal + (dailyTotal*dailyPopulation*.01);