-1

私の課題は、子供の可能性のある家族の組み合わせを含むテキスト ファイルを読み取ることです。GG = two girlsGBおよび。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 
4

3 に答える 3

0

あなたの問題は、sampleSize による除算です。sampleSize は、「boyBoy」などの変数よりも大きい整数です。"(boyBoy / sampleSize)" のように 2 つの整数を除算すると、結果は 0 になります。これは、整数の除算は整数の結果になり、整数で除算すると (10/100) は 0、(110/100) は 1 になるためです。 double percentGirlBoy = (girlBoy / ((double)sampleSize)) * 100d

于 2013-10-26T05:52:17.187 に答える
0

オブジェクトをパラメーターとして渡す必要がある String クラスで、オーバーライドされた equals メソッドを使用する必要があります。このような

token.equals("BB");

ここでコンテンツを比較します。 Equalto ( == ) 演算子を使用している場合は、両方の文字列参照の参照値を比較するだけなので、常にfalseになるため、「サンプルサイズ」は増加せず、0 のままになります。 " ArithmeticException: / by zero " をスローします。

于 2013-10-26T06:12:57.743 に答える
0

使用する必要があります

token.equals("GG");

それ以外の

token == "GG"
于 2013-10-26T05:44:24.420 に答える