#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: Я не эксперт, я просто студент.