2012-02-20 44 views
0
  1. 当我输入的输入,满足一切,不会触发任何我的错误,该方案刚刚过去的输入后退出像它跳过了forif循环。代码似乎跳过if或for循环

  2. 同样在System.out.printf("Enter the name of your second species: ");之后它将不允许任何输入,它只是跳到下一个提示。我不确定这是为什么。它上面的部分要求第一个物种的信息工作正常。

import java.util.Scanner; 

public class HW2johnson_pp1 { 

    public static void main(String args[]) { 

     Scanner keyboard = new Scanner(System.in); 

     System.out.printf("Please enter the species with the higher" + 
          " population first\n"); 
     System.out.printf("Enter the name of your first species: "); 
     String Species1 = keyboard.nextLine(); 
     System.out.printf("Enter the species' population: "); 
     int Pop1 = keyboard.nextInt(); 
     System.out.printf("Enter the species' growth rate: "); 
     int Growth1 = keyboard.nextInt(); 

     System.out.printf("Enter the name of your second species: "); 
     String Species2 = keyboard.nextLine(); 
     System.out.printf("Enter the species' population: "); 
     int Pop2 = keyboard.nextInt(); 
     System.out.printf("Enter the species' growth rate: "); 
     int Growth2 = keyboard.nextInt(); 

     if (Pop2 > Pop1) { 
      System.out.printf("The first population must be higher. \n"); 
      System.exit(0); 
     } 


     Species input1 = new Species(); 
     input1.name = Species1; 
     input1.population = Pop1; 
     input1.growthRate = Growth1; 

     Species input2 = new Species(); 
     input2.name = Species2; 
     input2.population = Pop2; 
     input2.growthRate = Growth2; 

     if ((input1.predictPopulation(1) - input2.predictPopulation(1)) <= 
      (input1.predictPopulation(2) - input2.predictPopulation(2))){ 

      System.out.printf(Species2 + " will never out-populate " + 
           Species1 + "\n"); 
     } 
     else { 

      for (int i = 0; input2.predictPopulation(i) <= 
          input1.predictPopulation(i); i++) { 

       if (input2.predictPopulation(i) == input1.predictPopulation(i)) { 
        System.out.printf(" will out-populate \n"); 
       } 
      } 
     } 
    } 
} 

这对于predictPopulation()

public int predictPopulation(int years) 
    { 
     int result = 0; 
     double populationAmount = population; 
     int count = years; 
     while ((count > 0) && (populationAmount > 0)) 
     { 
      populationAmount = (populationAmount + 
          (growthRate/100) * populationAmount); 
      count--; 
     } 
     if (populationAmount > 0) 
      result = (int)populationAmount; 

     return result; 
    } 

回答

1
  1. 这是因为后种2超越物种1,除非是在非常从来没有打印任何东西物种2和物种1的特例有正好在同一年的人口。

  2. 这是因为,当您输入物种1的增长率时,输入一个整数,然后按输入keyboard.nextInt()吞下整数,但在输入缓冲区中留下换行符,因此后续的keyboard.nextLine()认为在那里有一个空行等待它。