我的任务是阅读包含可能儿童结果的家庭组合的文本文件。 GG = two girls
,GB
和BG = one boy one girl
,BB = two boys
。我应该找到样本的大小,然后打印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
答案 0 :(得分:0)
你必须使用
token.equals("GG");
而不是
token == "GG"
答案 1 :(得分:0)
您的问题是由sampleSize划分。 sampleSize是一个大于任何“boyBoy”或任何变量的整数。 将“两个整数”除以“(boyBoy / sampleSize)”将导致结果为0,因为整数除法导致整数结果并且除以整数项表示为(10/100)为0,(110/100)为1,等等 因此,做得更好: double percentGirlBoy =(girlBoy /((double)sampleSize))* 100d
答案 2 :(得分:0)
您必须在String类中使用重写的equals方法,您必须将对象作为参数传递。喜欢这个
token.equals( “BB”);
这里它将比较你的内容,如果你使用Equalto(==)运算符,它只是比较两个String引用的参考值,因此它总是 false ,因此“samplesize”将永不递增,保持为0,负责抛出“ ArithmeticException:/ by zero”。