1

少し前に、部屋に何人の人がいるかを尋ねるプログラムの作成について、ここでしばらく前に質問を見ました。次に、各人に年齢を「インタビュー」し、年齢グループに割り当ててから、それらを印刷します。年齢層とその年齢層の人数。練習プログラムのアイデアが必要だったので、試してみることにしました。残念ながら、最初の for ステートメントを取得する前にコードが終了し、その理由が正確にはわかりません。構文エラーだと思いますが、正直なところわかりませんので、どんな助けでも大歓迎です。

import java.util.Scanner;


public class UnkownProjects {
  public static void main(String[] args){
    Scanner stringInput = new Scanner(System.in);
    Scanner numInput = new Scanner(System.in);

    System.out.println("How many people are in the room?");
    int amountOfPeople = numInput.nextInt();
    int[] totalPeople = new int[amountOfPeople];
    System.out.println("Test");

    for(int index = 0; index == totalPeople.length; index++){
        System.out.println("Please enter an age for each person in the room:");
        int ageOfPerson = numInput.nextInt();
        ageOfPerson = totalPeople[index];
        System.out.println("Test");
    }
    for(int index = 0; index == totalPeople.length; index++){
        if(totalPeople[index] < 20 && totalPeople[index] > 0){
            int[] underTwenty = null;
            underTwenty[index] = totalPeople[index];
            System.out.println("Test");
         }
      }
   }
}

間隔が少しずれていることもわかっていますが、コピーして貼り付けて、見栄えを良くしようとしただけなので、心配しないでください. ああ、「println」ステートメントは、プログラムが終了する場所を確認して確認するためだけにありました。

出力:

部屋には何人いますか。

(ここに入力する番号)

テスト

忍者 編集:

この投稿に戻って、この質問に出くわし、完成品を見てみたい人のために、完成したコードをここに置くことにしました。

import java.util.InputMismatchException;
import java.util.Scanner;

public class InterviewClass {
    public static void main(String[] args){

        try{
            Scanner numInput = new Scanner(System.in);

            System.out.println("How many people are in the room? (Ex: 5, 10, 24)");
            int totalPeopleInRoom = numInput.nextInt();

            int[] agesOfPeopleInRoom = new int[totalPeopleInRoom];
            int youngPeople = 0, middleAged = 0, oldPeople = 0, deadPeople = 0;

            System.out.println("Please enter an age for " + totalPeopleInRoom + " people (Ex: 17, 21, 45):");

            for(int index = 0; index < agesOfPeopleInRoom.length; index++){
                int tempAgePlaceHolder = numInput.nextInt();
                agesOfPeopleInRoom[index] = tempAgePlaceHolder;

                if((index + 1) == (totalPeopleInRoom/2)){
                    System.out.println("Half way there!");
                }
            }
            System.out.println("Age Group\tAmount In Group");

            for(int index = 0; index < agesOfPeopleInRoom.length; index++){
                if(agesOfPeopleInRoom[index] < 30 && agesOfPeopleInRoom[index] > 0){
                    youngPeople = youngPeople + 1;
                }
                if(agesOfPeopleInRoom[index] < 60 && agesOfPeopleInRoom[index] > 30){
                    middleAged = middleAged + 1;
                }
                if(agesOfPeopleInRoom[index] < 115 && agesOfPeopleInRoom[index] > 60){
                    oldPeople = oldPeople + 1;
                }
                else if(agesOfPeopleInRoom[index] < 0 || agesOfPeopleInRoom[index] > 115){
                    deadPeople = deadPeople + 1;
                }
                }
                System.out.println("Young People:\t" + youngPeople);
                System.out.println("Middle Aged:\t" + middleAged);
                System.out.println("Old People:\t" + oldPeople);
                System.out.println("Dead People:\t" + deadPeople);
                System.out.print("Total People:\t");
                System.err.println(totalPeopleInRoom);

        }catch(InputMismatchException inputException){
            System.err.println("[ERROR] Wrong type of input used: " + inputException);
        }
    }
}
4

5 に答える 5

2

これは悪い for ループです:for(int index = 0; index == totalPeople.length; index++)

代わりに次のようにします。for(int index = 0; index < totalPeople.length; index++)

for ループを分解してみましょう。

  • ループの最初の部分はint index = 0初期条件です。ループの開始時にインデックスを設定する必要があることをループに伝えます。
  • for ループの 2 番目の項目は、ループ内にあり、index == totalPeople.lengthtrue の場合はループを続けるか、false の場合はループを停止するかを for ループに指示する条件ステートメントです。ループが開始しようとすると、ステートメントは false になるため、ループは開始されません。だから、これがあなたの問題です。代わりに、インデックスが配列の長さより短い限り、または Java ではindex < totalPeople.length.
  • ループの 3 番目の項目 hereindex++は、各ループの完了時にインデックスをどう処理するかをループに指示します。ここでは、1 ずつ増やすように指示していますが、これは良いことです。
于 2013-10-22T21:24:17.463 に答える