-2

The program I am writing is one that has a validation loop to see if a family has the right amount of members for a survey (3-6) about their househould mpg. If they don't i have the program setup to tell them the do no meet the requirements and must enter a different number if they would like to proceed. I understand the validation loop i think, but the next part of the for loop is not as easy.

I'm not sure how the program will know how many times the user should enter the different mpgs for each car in the family. For instance if one family has 3 members and the other has 5. I need a separate input box. I'm mostly confused on what i would put in the for argument. Here is my code that I have so far.

EDIT: I have what I think is the correct way to format the for loop. Now I have to figure out how to have the user input the data into the body of the for loop. So if they have 3 cars I need to have them enter the mpg for each and then calculate the average. Im stuck on how to store each cars mpgs separately.

import javax.swing.JOptionPane;

public class MpgRetry
{

public static void main(String[] args) 
{
    String familyMembersStr, mpgStr;
    int familyMembers;
    int mpgAverage;



    familyMembersStr = JOptionPane.showInputDialog("Please enter number of family members: ");
    familyMembers=Integer.parseInt(familyMembersStr);

    while(familyMembers <3 || familyMembers >6)
    {
        JOptionPane.showMessageDialog(null, "Sorry, this survey can only use data from families with 3-6 members.");

        familyMembersStr = JOptionPane.showInputDialog("Please enter the number of family members (3-6): ");

        familyMembers = Integer.parseInt(familyMembersStr);
    }

    double[] mpg = new double[familyMembers];  // creat array to hold values

    for (int i = 0; i < familyMembers; i++)
    {  // assuming each member has one car
       mpgStr = JOptionPane.showInputDialog("Please enter MPG each car (separately): ");
       mpg[i] = Integer.parseInt(mpgStr);

    }

        mpgAverage = (mpg / familyMembers);
        JOptionPane.showMessageDialog(null,"The average mpg of this family is " + mpgAverage + ".");

}

}

4

3 回答 3

0

我想你想要这样的东西:

double[] mpg = new double[familyMembers];  // creat array to hold values
for (int i = 0; i < familyMembers; i++){  // assuming each member has one car
   mpg[i] = // get mpg Input
}

如果你想做一些事情,比如获取平均值,你可以这样做

double total = 0;
for (int i = 0; i < mpg.length; i++) {
    total += mpg[i];
}

double average = total / mpg.length

System.out.println("Average mpg for each member is " + average);

编辑:如果一个人有不止一辆车

// You need an ArrayList to dynamically change the size of the array
// because you don't know exactly how many cars there will be total
ArrayList<Double> mpgList = new ArrayList<Double>();
for (int i = 0; i < familyMembers; i++){  
   int cars = // ...input dialog to ask how many cars each person has goes here
   for (int j = 0; j < cars; j++) {
      mpg = // user input
      mpgList.add(mpg)
   }
}

// to get total
int total = 0;
for (int i = 0; i < mpg.size();i++){
    total += mpgList.get(i);
}

// find average here

编辑:不使用数组

double total = 0;
for (int i = 0; i < familyMembers; i++){  // assuming each member has one car
    double mpg = // parsed user input
    total += mpg;  
}
// get average here
于 2013-10-17T01:48:15.920 回答
0

所以我认为你的第二个循环应该是一个 if 语句,所以你的第二个语句看起来像

if(familyMembers >= 3 && familyMembers <= 6)
{
}

至于你应该在那个语句中做什么,我会在你的程序顶部创建一个计数器,

int currentCar = 1;

然后在 if 语句中你可以有一个 while 循环,比如

while(currentCar !> familyMembers)
{
}

基本上在那个while循环中,你会要求他们输入“当前汽车”的mpg,存储它然后增加currentCar。

于 2013-10-17T01:51:15.107 回答
0

假设有 4 个家庭成员...

你想对这些家庭成员做什么?如果你想循环尽可能多的家庭成员,你可以简单地使用这种 for 循环:

for(int i=0; i<familyMembers; i++){
     //some code
}
于 2013-10-17T01:51:40.660 回答