Я работаю над программой, которая работает с внешним файлом. Программа должна: Написать программу для чтения результатов опроса в трех массивы, эхо печати данных и выполнение и выводить следующие анализы:Доход на дом Доход - java
Подсчитайте число семей, включенным в исследовании и печать три - таблица столбец, отображающая данные, считанные (предполагается не более 25 домашних хозяйств)
Рассчитайте средний доход домохозяйства и укажите идентификационный номер и доход каждого домохозяйства, превышающий средний.
Определить процент домохозяйств, имеющих доходы ниже уровня бедности. Доход уровня бедности может быть рассчитан по формуле: p = $ 3750,00 + $ 750,00 * (м-2), где m - количество членов каждого домохозяйства.
Это то, что я до сих пор, но это, кажется, не так, как она работает (я должен иметь к классам):
import java.io.*;
import java.util.Scanner;
public class main
{
public static void main(String[] args) throws Exception
{
Scanner sf = new Scanner(new FileInputStream("survey2.dat"));
String[] filePaths = { "D:/survey2.dat" };
SurveyCollection surveys = new SurveyCollection();
Runner runner = new Runner();
runner.load(filePaths, surveys);
runner.printHouseholdIncomeExceedingAverage(surveys);
runner.printouseholdBelowPoverty(surveys);
//print(surveys);
System.exit(0);
}
}
import java.io.*;
import java.util.Scanner;
public class Runner
{
public static void load(String[] filePaths, SurveyCollection surveys)throws Exception {
for (int i = 0; i < filePaths.length; i++) {
Scanner fileIn = null;
try {
fileIn = new Scanner(new FileReader(filePaths[i]));
while (fileIn.hasNextLine()) {
String line = fileIn.nextLine();
surveys.setSurvey(line);
}
} catch (Exception ex) {
ex.printStackTrace();
} /*finally {
fileIn.close();
}*/
}
}
public static void printHouseholdIncomeExceedingAverage(
SurveyCollection surveys) {
int size = surveys.getNumberOfHousehold();
double average = surveys.getAverageIncome();
String message = "Households with income exceeding an average income of %,.2f%n";
System.out.printf(message, average);
System.out.println("Id Income Member");
for (int i = 0; i < size; i++) {
if (surveys.getIncomeByIdx(i) > average) {
System.out.println(surveys.formattedString(i));
}
}
}
/**
* design for debug
* @param surveys
*/
private static void print(SurveyCollection surveys) {
int size = surveys.getNumberOfHousehold();
System.out.println();
for (int i = 0; i < size; i++) {
System.out.println(surveys.formattedString(i));
}
}
public static void printouseholdBelowPoverty(SurveyCollection surveys) {
int size = surveys.getNumberOfHousehold();
int count = 0;
System.out.println();
for (int i = 0; i < size; i++) {
if (surveys.isInPoverty(i)) {
System.out.println(surveys.formattedString(i));
count++;
}
}
String message = "Percent of households below poverty level = %f%n";
System.out.printf(message, ((double) count/(double) size));
}
}
class SurveyCollection {
final int MAX = 30;
private int idx = 0;
private int sumOfIncome = 0;
private String[] surveyIds = new String[MAX];
private int[] incomes = new int[MAX];
private int[] members = new int[MAX];
public void setSurvey(String value) {
if (idx < MAX) {
String[] fields = value.split(" ");
surveyIds[idx] = fields[0];
incomes[idx] = Integer.parseInt(fields[1]);
members[idx] = Integer.parseInt(fields[2]);
sumOfIncome += incomes[idx];
idx++;
}
}
public int getNumberOfHousehold() {
return this.idx;
}
public double getAverageIncome() {
return (double) sumOfIncome/getNumberOfHousehold();
}
public int getIncomeByIdx(int idx) {
return incomes[idx];
}
public String formattedString(int idx) {
String style = "%s %d %d";
return String.format(style, this.surveyIds[idx], this.incomes[idx], this.members[idx]);
}
public boolean isInPoverty(int idx) {
boolean result = false;
int threadhold = (3750 + 750 * members[idx]);
result = incomes[idx] <= threadhold;
return result;
}
}
Что я делаю неправильно ?
Внешний Файл:
1041 12180 4
1062 13240 3
1327 19800 2
1483 22458 8
1900 17000 2
2112 18125 7
2345 15623 2
3200 6
3600 6500 5
3601 11970 2
4725 8900 3
6217 10000 2
9280 6200 1
Вывод должен быть похож на это:
id income members
1041 12180 4
1062 13240 3
1327 19800 2
1483 22458 8
1900 17000 2
2112 18125 7
2345 15623 2
3200 6
3600 6500 5
3601 11970 2
4725 8900 3
6217 10000 2
9280 6200 1
Households with income exceeding an average income of 12707.4
id income members
1062 13240 3
1327 19800 2
1483 22458 8
1900 17000 2
2112 18125 7
2345 15623 2
Percent of households below poverty level = 0.0769231
Вы должны быть более конкретными в своей проблеме. Чего вы ожидаете? Что происходит вместо этого? –
Спасибо, я пытался это сделать, но я не мог заставить его это сделать. –
Я ожидаю, что он распечатает идентификатор, доход и общие члены во внешнем файле, затем найдет средний доход домашних хозяйств. Затем распечатайте дом, который превышает средний доход, а также средний размер домашних хозяйств, находящихся за чертой бедности. Однако ничего не происходит. –