2013-10-26 4 views
-1

저의 임무는 아이들의 결과가 가능한 가족을위한 텍스트 파일을 읽는 것입니다. GG = two girls, GBBG = 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

당신이

token.equals("GG"); 

대신 문제가 sampleSize에 의해 분할이다

token == "GG" 
0

의 사용해야합니다

내 코드입니다. sampleSize는 "boyBoy"또는 기타 변수보다 큰 정수입니다. "(boyBoy/sampleSize)"와 같이 두 개의 정수를 나눌 때 정수 나누기가 정수 결과로 이어지고 정수 항의 (10/100)이 0이고 (110/100)이 1이되므로 결과 0이됩니다. 등 따라서, 더 나은 할 일 : 더블 percentGirlBoy = (girlBoy/((더블) sampleSize)) * 100D 당신은 오버라이드 (override)를 사용하면 매개 변수로 개체를 전달할 수있는 곳 String 클래스의 방법과 동일해야

0

. 이처럼

token.equals ("BB"); 여기

당신의 내용을 비교하고 당신이 EqualTo가 (==) 연산자를 사용하는 경우, 단순히 두 문자열 참조의 참조 값을 비교하고, 따라서 항상 거짓 와서 따라서 유지, 증가하지 않을 것 "samplesize" 0으로 처리하여 "ArithmeticException :/0으로"을 던졌습니다.

+0

좋아,이게 많이 도움이됩니다! 도와 주셔서 감사합니다! – user2922247

관련 문제