Как отделить элементы от файла в Java

#java #file #if-statement #java.util.scanner #next

#java #файл #if-оператор #java.util.scanner #Далее

Вопрос:

Добрый день, в настоящее время я пытаюсь прочитать содержимое файла и добавить их в соответствующие переменные в зависимости от того, сколько раз они встречаются. Программа предназначена для вычисления вероятности появления мальчика или девочки в семье из 2 потомков. BB означает 2 мальчика, GG означает 2 девочки, а GB или BG — мальчик и девочка. Информация о файле выглядит следующим образом :

 BB

GB

GB

BG

GG

GB

GB

GB

GB

GG
 

Вот что я закодировал:

 import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class Family
{
   public static void main (String args[]) throws IOException {
    //variables defined
    int numGB = 0;
    int numBG = 0;
    int numGG = 0;
    int numBB = 0;
    int totalNum = 0;
    double probBG;
    double probGG;
    double probBB;
    String token ="";
    int spaceDeleter = 0;
    int token2Sub = 0;
    
    File fileName = new File ("test1.txt"); 
    
    Scanner in = new Scanner(fileName); //scans file
    
    System.out.println("Composition statistics for families with two children");
    while(in.hasNextLine())
    {
        token = in.next( ); //recives token from scanner
        if(token.equals("GB"))
        {
        numGB = numGB   1;
        }
        else if(token.equals("BG"))
        {
        numBG = numBG   1;
        }
        else if(token.equals("GG"))
        {
        numGG = numGG   1;
        }
        else if(token.equals("BB"))
        {
        numBB = numBB   1;
        }
        else if(token.equals(""))
        {
        spaceDeleter =  1; //tried to delete space to no avial
        }
        else 
        {
        System.out.println("Data reading error");
        }
    }
    in.close(); //closes file
    
    totalNum = numBB   numGG   numBG   numGB; // calculates total num of tokens
    probBG = (numBG   numGB) / totalNum; //Probability of boy and girl
    probBB = numBB / totalNum; // Probability of Boy
    probGG = numGG / totalNum; //Probability of girl
    
    System.out.println("Total number of families: "   totalNum); //print results to user
    System.out.println("");
    System.out.println("Number of families with");
    System.out.println("t 2 boys: "   numBB   " represents "   probBB   "%");
    System.out.println("t 2 girls: "   numGG   " represents "   probGG   "%");
    System.out.println("t 1 boy and 1 girl: "   (numBG   numGB)   " represents "   probBG   "%");
}
}

 

Комментарии:

1. В чем вопрос?

2. Как я могу отделить элементы, полученные от сканера, чтобы их можно было подсчитать в итогах внутри операторов if?

3. Используйте метод isBlank для строки, чтобы проверить наличие пустой строки.

Ответ №1:

Я не знаю, отвечает ли это на ваш вопрос, но, как я понимаю, вы хотите разделить каждую строку в текстовом файле. Если это так, вы можете написать оператор switch, который имеет два случая, A и B. И вы хотите, чтобы цикл проходил по каждому символу в строке:

 for(int i = 0; i<2; i  ){
   switch(token.charAt(i)){
       case 'G':
           <Some variable>
           break;
       case 'B':
           <Some variable>
           break;
    }
}
 

P.S: Я не эксперт, я просто студент.