Java增量循环中的整数

Java增量循环中的整数,java,while-loop,integer,increment,Java,While Loop,Integer,Increment,我的任务是阅读文本文件,其中包含一个家庭的组合,可能会产生孩子GG=两个女孩,GB和BG=一男一女,BB=两个男孩。我应该找到样本的大小,然后打印3种可能结果的比率。 我似乎不能让我的变量在整个循环中递增,它们每次都是0。我检查了调试器,它显示每个文件都被正确读取,但增量由于某种原因不起作用 这是我的代码: import java.util.Scanner; import java.io.File; import java.io.IOException; public class Family

我的任务是阅读文本文件,其中包含一个家庭的组合,可能会产生孩子
GG=两个女孩
GB
BG=一男一女
BB=两个男孩
。我应该找到样本的大小,然后打印3种可能结果的比率。 我似乎不能让我的变量在整个循环中递增,它们每次都是0。我检查了调试器,它显示每个文件都被正确读取,但增量由于某种原因不起作用

这是我的代码:

import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class Family
{
   public static void main(String[] args) throws IOException
{
  String token = "";
  int girlGirl = 0;
  int boyBoy = 0;
  int girlBoy = 0;
  int sampleSize = 0;
  File fileName = new File("test2.txt");
  Scanner inFile = new Scanner(fileName);

  //read file and get data
  while (inFile.hasNext())
  {
     token = inFile.next();
     if(token == "GG")
     {
         girlGirl++;
         sampleSize++;
     }
     else if(token == "BB")
     {
         boyBoy++;
         sampleSize++;
     }
     else if(token == "GB")
     {
         girlBoy++;
         sampleSize++;
     }
     else if(token == "BG")
     {
         girlBoy++;
         sampleSize++;
     }
  }
  inFile.close();

  int percentBoyBoy = (boyBoy / sampleSize) * 100;
  int percentGirlGirl = (girlGirl / sampleSize) * 100;
  int percentGirlBoy = (girlBoy / sampleSize) * 100;
  //print results of sample
  System.out.println("Sample Size: " + sampleSize);
  System.out.println("Two Boys: " + percentBoyBoy  + "%");
  System.out.println("One Boy One Girl: " + percentGirlBoy  + "%");
  System.out.println("Two Girls: " + percentGirlGirl  + "%");
}//end of main method
}//end of class 
你必须使用

token.equals("GG");
而不是

token == "GG"

你的问题是按样本划分。 sampleSize是一个大于任何“boyBoy”或任何变量的整数。 将两个整数除以“(boyBoy/sampleSize)”将得到结果0,因为整数除以将得到整数结果,并且整数项中的除法(10/100)是0,(110/100)将是1,以此类推。 因此,最好是:
double percentGirlBoy=(girlBoy/((double)sampleSize))*100d

您必须在String类中使用重写的equals方法,其中必须将对象作为参数传递。像这样

代币。等于(“BB”)

在这里,它将比较您的内容,如果您使用Equalto(=)运算符,它只需比较两个字符串引用的引用值,因此它总是出现false,因此“samplesize”永远不会递增,保持为0,它负责抛出“算术异常:/by zero”