Я занимаюсь школьным заданием. Это требует, чтобы я читал имена и доходы из файла и каждый, кто находится в одной семье, вместе, чтобы рассчитать налог семьи. Я уже помещал людей в разные массивы, но мне сложно подсчитывать, сколько членов семьи у каждой семьи.Как подсчитать количество строк в массиве от чтения файла
Файл, который я читаю из выглядит следующим образом:
Джонс Ральф 39765,45
Джонс Мэри 18532,00
Jones Frank 0,00
Хансен Джон 63321.00
Hansen Linda 8765.00
Мерфи Джефф 53786,75
Murphy Нина 65432,00
Мерфи Ellen 0,00
Мерфи David 0,00
Simon Майк 7654,00
Саймон Джанет 44762,00
Simon Том 0,00
Я попытался вставить count ++ в несколько мест, но ни один из них не дал бы мне правильный ответ. Пожалуйста, помогите мне здесь.
import java.io.*;
import java.util.Scanner;
public class caltax
{
public static void main (String[] args)
{
// 1. Define two arrays
String[] families = null;
double[] taxes = null;
// 2. Read file:
try
{
Scanner infile = new Scanner (new FileInputStream("family.dat"));
while (infile.hasNextLine())
{
String personLastName = infile.next();
//skip the first name
infile.next();
double personTax = infile.nextDouble();
// add person data
if (null == families)
{
// create array for
families = new String[] { personLastName };
taxes = new double[] { personTax };
}
else
{
boolean familyExists = false;
// check existing families
for (int i = 0; i < families.length; i++)
{
if (personLastName.equals(families[i]))
{
// add personTax to family owed taxes
taxes[i] += personTax;
familyExists = true;
break;
}
}
if (!familyExists)
{
// Extend arrays to put new family
// create temp arrays with size+1
String[] tmpFamilies = new String[families.length + 1];
double[] tmpTaxes = new double[taxes.length + 1];
System.arraycopy(families, 0, tmpFamilies, 0, families.length);
System.arraycopy(taxes, 0, tmpTaxes, 0, taxes.length);
// set new last elements data
tmpFamilies[tmpFamilies.length - 1] = personLastName;
tmpTaxes[tmpTaxes.length - 1] = personTax;
// replace families and taxes with newly created tmp arrays
families = tmpFamilies;
taxes = tmpTaxes;
}
}//else
}// while
infile.close();
}//try
catch(Exception e)
{
System.out.println(e.toString());
}//catch block
// Print results
for (int i=0;i < families.length; i++)
{
System.out.println("family " + families[i] + " owes $" + taxes[i]);
}
}
}
Вы просмотрели https://docs.oracle.com/javase/7/docs/api/java/util/Map. html? – Michal
Видите ли, мой преподаватель никогда не преподавал нам метод MAP, поэтому я предполагаю, что она не хочет, чтобы мы использовали карту. –
Почему бы не использовать другой массив для отслеживания счета для каждой семьи? –