-2

私が書いているプログラムは、家計 mpg に関する調査 (3 ~ 6) に適した人数のメンバーが家族にいるかどうかを確認するための検証ループを備えたプログラムです。そうでない場合は、要件を満たしていないことを知らせるプログラムを設定しており、続行する場合は別の番号を入力する必要があります。検証ループは理解できたと思いますが、forループの次の部分はそれほど簡単ではありません。

ユーザーが家族の車ごとに異なるmpgsを何回入力する必要があるかをプログラムがどのように知るかはわかりません。たとえば、1 つの家族に 3 人のメンバーがいて、もう 1 つの家族に 5 人のメンバーがいるとします。別の入力ボックスが必要です。for 引数に何を入れるかについて、私はほとんど混乱しています。これが私のこれまでのコードです。

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

}

}

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

あなたの2番目のループはifステートメントでなければならないと思うので、2番目のステートメントは次のようになります

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 に答える