初学者的Java Help IF/THEN语句?

初学者的Java Help IF/THEN语句?

问题描述:

我对编码颇为陌生,而且遇到了一些问题。初学者的Java Help IF/THEN语句?

我需要创建一个程序,允许用户创建他们自己的阿米巴殖民地。其中一个要求是包括给他们维生素和疾病。

维生素 - 维生素可以帮助我们的阿米巴保持健康。询问你的用户是否想给他们的殖民地维生素。

疾病 - 不幸的是,所有的宠物有时会生病。当发生这种情况时,10%的阿米巴人死亡。每场会议:

如果殖民地没有给予维生素,它有25%的机会,它可能会生病。

如果菌落含有维生素,它有20%的机会可能会生病。

我用一个随机数发生器来得到疾病的百分比,但由于某种原因,我的if/then语句有一些wrog,因为它从不使得疾病等于true,它总是使它等于false,我有它设置为布尔值,并声明一些if/then语句使疾病等于false。

编辑:我列出了下面的代码,而不是链接,我添加了luisluix提供的代码,现在似乎工作。谢谢!

我的代码如下所示:

import java.lang.Math; 
import java.util.Random; 
import javax.swing.JOptionPane; 

public class AmoebaColony { 

private String colonyName; 
private String caretakerName;; 
private String isItSick; 
private int daysFed; 
private int breedRequest; 
private int breedSuccess; 
private int rNumber; 
private int requestVitamins; 
private double startingSize; 
private double colonySize; 
private double finalSize; 
private double died; 
private boolean sickness; 
private boolean vitamin; 

public void setColonyProperties() 
{ 
    JOptionPane.showMessageDialog(null, "Welcome new caretaker, this program allows you to create, manage, and develope your own amoeba colony.", 
    "Welcome!", JOptionPane.INFORMATION_MESSAGE); 
    colonyName = JOptionPane.showInputDialog(null, "Please enter the name of your amoeba colony.", 
    "Creating Your Amoeba Colony", JOptionPane.INFORMATION_MESSAGE); 
    caretakerName = JOptionPane.showInputDialog(null, "Please enter the name of your amoeba colony's caretaker.", 
    "Creating Your Amoeba Colony", JOptionPane.INFORMATION_MESSAGE); 
    startingSize = Double.parseDouble(JOptionPane.showInputDialog(null, "Please enter the starting size of your amoeba colony.", 
    "Creating Your Amoeba Colony", JOptionPane.INFORMATION_MESSAGE)); 
} 

public void setUserActions() 
{ 
    JOptionPane.showMessageDialog(null, "Congratulations, " + colonyName + " is starting out great with a totoal of " + startingSize + " amoebas.", 
    "Your New Amoeba Colony", JOptionPane.INFORMATION_MESSAGE); 
    JOptionPane.showMessageDialog(null, "Now that you've got your colony set up, you can do several things to it, including feeding, breeding, and giving it vitamins.", 
    "Developing Your Colony", JOptionPane.INFORMATION_MESSAGE); 
    daysFed = Integer.parseInt(JOptionPane.showInputDialog(null, "Feeding your colony allows it to breed, for each day fed, it can breed one time. How many days would you like to feed your colony?", 
    "Feeding Your Colony", JOptionPane.INFORMATION_MESSAGE)); 
    breedRequest = Integer.parseInt(JOptionPane.showInputDialog(null, "Breeding allows you to increase the size of your colony. A colony must be fed in order to breed. \nYour colony size will double for each successful breed. How many time would you like your colony to breed?", 
    "Breeding Your Amoeba Colony", JOptionPane.INFORMATION_MESSAGE)); 
} 

public void setVitamin() 
{ 
    requestVitamins = JOptionPane.showConfirmDialog(null, "Giving your colony vitamins decreases the chance of your amoebas getting sick and dying off. Would you like to give your colony vitamins?", 
    "Keeping Your Colony Healthy",JOptionPane.INFORMATION_MESSAGE, JOptionPane.YES_NO_OPTION);  
} 

public void vitaminResult() 
{ 
    if (requestVitamins == JOptionPane.YES_OPTION) 
     vitamin = true;   
    else 
     vitamin = false; 
} 

public void setBreeding() 
{ 
    if (daysFed >= breedRequest) 
     breedSuccess = breedRequest; 
    else 
     breedSuccess = daysFed; 

    colonySize = startingSize; 
    colonySize *= Math.pow(2, breedSuccess); 
} 

public void getSick() 
{ 
    Random number = new Random();   
    rNumber = number.nextInt(100); 

    if (vitamin == true) 
    { 
     if (rNumber <= 20) 
      sickness = true; 
     else 
      sickness = false; 
    } 
    else 
    { 
     if (rNumber <= 25) 
      sickness = true; 
     else 
      sickness = false; 
    } 
} 

public void sickEffect() 
{   
    if (sickness == true) 
     finalSize = colonySize*.10; 
    else 
     finalSize = colonySize; 
} 

public void deadCount() 
{ 
    died = finalSize - colonySize; 
} 

public void setSickText() 
{ 
    if (sickness == true) 
     isItSick = "Yes"; 
    else 
     isItSick = "No"; 
} 

public void getFinalDialogOutput() 
{ 
    JOptionPane.showMessageDialog(null, rNumber + " All actions have been completed. \n\n Colony Name: " + colonyName + "\n Caretaker Name: " + caretakerName + "\n Starting Size: " + startingSize + "\n Number of of times fed in days: " + daysFed + "\n Number of times requested to breed: " + breedRequest + "\n Number of successful breeds: " + breedSuccess + "\n Sickness and death: " + isItSick + ", " + died + " died" + "\n Final size of colony: " + finalSize, "Amoeba Colony Summary", JOptionPane.INFORMATION_MESSAGE); 
} 
} 

和测试类这里

public class AmoebaColonyTest { 
public static void main(String[] args) { 

    AmoebaColony newColony = new AmoebaColony(); 

    newColony.setColonyProperties(); 
    newColony.setUserActions(); 
    newColony.setVitamin(); 
    newColony.setBreeding(); 
    newColony.getSick(); 
    newColony.sickEffect(); 
    newColony.deadCount(); 
    newColony.setSickText(); 
    newColony.getFinalDialogOutput(); 

} 
} 
+0

@clcto OK对不起,我编辑它。 – beginnercoder010812 2014-10-07 22:32:32

+0

请注意,你永远不会调用'vitaminResult',但无论如何,我跑你的原代码,他们有时会生病。如果有问题,我不知道问题是什么。 – Radiodef 2014-10-07 22:37:21

假设它不是一个逻辑错误,我的猜测是始终使用大括号,使知道如果语句正确执行。此外,你正在使用随机数字,你仍然有1/5的东西生病。确保你做了多次迭代并打印rNumber。

if (vitamin == true && rNumber <= 20) 
     sickness = true; 

    else if (vitamin == false && rNumber <= 25) 
     sickness = true; 

    else 
     sickness = false; 

尝试这样的:

if (vitamin == true && rNumber <= 20){ 
     sickness = true; 
    } 
    else if (vitamin == false && rNumber <= 25){ 
     sickness = true; 
    } 
    else{ 
     sickness = false; 
    } 
+0

好的,我做到了,谢谢。但是当我产生了33个数字时,它说病症是错误的,并且在输出中,isItSick被设置为“否”并且0死亡,当它应该是“是”和“#死亡” – beginnercoder010812 2014-10-07 22:27:18

+0

那就好了,你的如果陈述只会让他们生病,如果rNumber小于或等于20或25 – luisluix 2014-10-07 22:30:13

+0

好吧,对。感谢代码修复,它现在似乎正在工作。我只需要修复我犯的数学错误,它给了我的消极的死亡和最终大小:P谢谢。 – beginnercoder010812 2014-10-07 22:34:30