gpt4 book ai didi

Java - 代码可以编译,但整个代码无法运行

转载 作者:行者123 更新时间:2023-12-01 14:59:56 24 4
gpt4 key购买 nike

我正在做一项任务,我需要找出较小物种的数量要多少年才能超过较大物种的数量。

我创建的程序可以编译,但只运行了前半部分。在 if-else 循环开始之前,它没有任何跟在两个 system.out.println 命令之后的输出。

我需要采取哪些步骤来调整程序代码,使其成功地通过 if-else 循环?

类别:

import java.util.Scanner;

public class Species
{
private String name;
private int population;
private double growthRate;

public void readInput()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("What is the species' name?");
name = keyboard.nextLine();

System.out.println("What is the population of the species?");
population = keyboard.nextInt();

while(population < 0)
{
System.out.println("Population cannot be negative.");
System.out.println("Reenter population:");
population = keyboard.nextInt();
}

System.out.println("Enter growth rate (% increase per year):");
growthRate = keyboard.nextDouble();
}

public void writeOutput()
{
System.out.println("Name = " + name);
System.out.println("Population = " + population);
System.out.println("Growth rate = " + growthRate + "%");
}

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;
}

public Species(String name)
{
name = name;
population = 0;
growthRate = 0.0;
}

public Species(int population)
{
name = "";
if (population > 0)
population = population;
else
{
System.out.println("ERROR: using a negative" + "population.");
System.exit(0);
}
growthRate = 0.0;
}

public Species(double growthRate)
{
name = "";
population = 0;
growthRate = growthRate;
}

public Species(String name, int population, double growthRate)
{
name = name;
if (population > 0)
population = population;
else
{
System.out.println("ERROR: using a negative" + "population.");
System.exit(0);
}
growthRate = growthRate;
}

public Species()
{
name = "";
population = 0;
growthRate = 0;
}

public void setSpecies(String newName, int newPopulation, double newGrowthRate)
{
name = newName;
if (newPopulation >= 0)
population = newPopulation;
else
{
System.out.println("ERROR: using a negative " + "population.");
System.exit(0);
}

growthRate = newGrowthRate;
}

public void setName(String name)
{
name = name;
}

public void setPopulation(int population)
{
if (population > 0)
population = population;
else
{
System.out.println("ERROR: using a negative" + "population.");
System.exit(0);
}
}

public void setGrowthRate(double growthRate)
{
growthRate = growthRate;
}

public String getName()
{
return name;
}

public int getPopulation()
{
return population;
}

public double getGrowthRate()
{
return growthRate;
}

public boolean equals(Species otherObject)
{
return (name.equalsIgnoreCase(otherObject.name)) &&
(population == otherObject.population) &&
(growthRate == otherObject.growthRate);
}
}

程序:

import java.util.Scanner;
public class KlingonOx extends Species
{
public static void main(String[] args)
{
new KlingonOx().run();
}

public void run()
{
Species klingonSpecies = new Species("Ox", 100, 15);
Species earthSpecies = new Species("Elephant", 10, 35);

klingonSpecies.readInput();
klingonSpecies.writeOutput();
klingonSpecies.predictPopulation(10);
klingonSpecies.setSpecies("Ox", 100, 15);
klingonSpecies.setName("Ox");
klingonSpecies.setPopulation(100);
klingonSpecies.setGrowthRate(15);
klingonSpecies.getName();
klingonSpecies.getPopulation();
klingonSpecies.getGrowthRate();
klingonSpecies.equals(earthSpecies);

earthSpecies.readInput();
earthSpecies.writeOutput();
earthSpecies.predictPopulation(10);
earthSpecies.setSpecies("Elephant", 10, 35);
earthSpecies.setName("Elephant");
earthSpecies.setPopulation(10);
earthSpecies.setGrowthRate(35);
earthSpecies.getName();
earthSpecies.getPopulation();
earthSpecies.getGrowthRate();
earthSpecies.equals(klingonSpecies);

System.out.println("The " + klingonSpecies.getName() + " starting population is: " + klingonSpecies.getPopulation());
System.out.println("The " + earthSpecies.getName() + " starting population is: " + earthSpecies.getPopulation());


int year = 0;
int newkpop = 100;
int newepop = 10;
if (klingonSpecies.getPopulation() < earthSpecies.getPopulation())
{
while (klingonSpecies.getPopulation() < earthSpecies.getPopulation())
{
newkpop = (int)(klingonSpecies.getPopulation() + (klingonSpecies.getPopulation()*1.15) );
newepop = (int)(earthSpecies.getPopulation() + (earthSpecies.getPopulation()*1.35) );
year ++;
}
System.out.println("The population of " + klingonSpecies.getName() + " exceeds the population of " + earthSpecies.getName() + " in " + year + "years.");
}
else
{
while (klingonSpecies.getPopulation() > earthSpecies.getPopulation())
{
newkpop = (int)(klingonSpecies.getPopulation() + (klingonSpecies.getPopulation()*1.15) );
newepop = (int)(earthSpecies.getPopulation() + (earthSpecies.getPopulation()*1.35) );
year ++;
}
System.out.println("The population of " + earthSpecies.getName() + " exceeds the population of " + klingonSpecies.getName() + " in " + year + "years.");
}

}
}

最佳答案

您有一个 Species#setPopulation() 方法,但您似乎忘记使用它。在两个循环中使用 klingonSpecies.setPopulation(newkpop);earthSpecies.setPopulation(newepop);

与循环问题无关:您可能需要使用 Species#getGrowthRate() 而不是键入数字 1.15 和 1.35。

关于Java - 代码可以编译,但整个代码无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13812596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com