For Loops的新手,寻找一些指导

时间:2013-10-17 01:34:34

标签: java for-loop

我正在编写的程序是一个有一个验证循环的程序,以查看一个家庭是否有适当数量的成员进行调查(3-6)关于他们的房子应该mpg。如果他们没有我的程序设置,告诉他们不符合要求,如果他们想继续,必须输入一个不同的号码。我认为我认为验证循环,但for循环的下一部分并不那么容易。

我不确定程序将如何知道用户应该为家庭中的每辆车输入不同的mpgs多少次。例如,如果一个家庭有3个成员而另一个家庭有5个成员。我需要一个单独的输入框。我大部分时间都会对参与争论的内容感到困惑。这是我到目前为止的代码。

编辑:我认为格式化for循环的方法是正确的。现在我必须弄清楚如何让用户将数据输入到for循环的主体中。因此,如果他们有3辆车,我需要让他们输入每辆车的mpg,然后计算平均值。我坚持如何分别存储每辆汽车mpgs。

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 + ".");

}

}

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

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

int currentCar = 1;

然后在if语句中你可以有一个像

这样的while循环
while(currentCar !> familyMembers)
{
}

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

答案 2 :(得分:0)

说是否有4个家庭成员......

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

for(int i=0; i<familyMembers; i++){
     //some code
}