在for循环序列中跳过一个数字?

时间:2016-11-12 03:19:34

标签: java

所以我有另一个功课问题。首先,我会列出说明,然后我会列出我的代码,希望有人可以帮助我/指导我朝正确的方向发展。

方向:

编写一个计算酒店入住率的程序。该程序应首先询问用户酒店有多少楼层。然后,for循环应该为每个楼层迭代一次。在for循环的每次迭代中,程序应该询问用户楼层的房间数量以及占用的房间数量。所有迭代完成后,程序应显示酒店有多少房间,占用多少房间以及占用房间的百分比。

  

很多酒店都没有13楼这是传统的。 >此程序中的for循环应跳过整个第十三循环迭代。

输入验证(记住永远不要使用循环"如果"):不要接受楼层数小于1的值。不要接受楼层房间数量少于10的值。

我的代码:

    import java.util.Scanner;
    import java.text.DecimalFormat;

    public class Homework7Hotel
    {
    public static void main (String[] args)
      {
      Scanner keyboard = new Scanner (System.in);
      DecimalFormat formatter = new DecimalFormat("%#,##0.00");
      int numFloors = 0;
      int numRooms = 0;
      int totalRooms = 0;
      int numOccupied = 0;
      int totalOccupied = 0;
      int percentOccupied = 0;

  System.out.println("Please enter the number of floors in the hotel: ");
  numFloors = keyboard.nextInt();

  while (numFloors <1)
     {
     System.out.println("You have entered an invalid number of floors. ");
     System.out.println("Please enter the number of floors in the hotel: ");
     numFloors = keyboard.nextInt();
     }

  for (int counter = 1; counter <=numFloors; counter++)
  {
     System.out.println("Please enter the number of rooms on floor #: " + counter);
     numRooms=keyboard.nextInt();
     totalRooms += numRooms;

  while (numRooms <10)
     {
        System.out.println("You have entered an invalid number of rooms. ");
        System.out.println("Please enter the number of rooms on floor #: " + counter);
        numRooms = keyboard.nextInt();
     }
        System.out.println("Please enter the number of occupied rooms on floor #: " + counter);
        numOccupied = keyboard.nextInt();
        totalOccupied += numOccupied; 
        // *not sure of how to do this* percentOccupied = totalOccupied/totalRooms;    
  }

  System.out.println("The hotel has a total of " + totalRooms + " rooms.");
  System.out.println(totalOccupied + " of the rooms are occupied.");
  System.out.println (percentOccupied + "% of the rooms are occupied.");

   }
}

所以,我遇到的问题是:

1)根据说明,我如何在循环中完全跳过13楼?

任何帮助将不胜感激!谢谢!

3 个答案:

答案 0 :(得分:2)

您可以在forloop中使用continue关键字,例如。

for(int i = 0;i <20;i++){
    if(i == 13){
        continue;
    }
//Do rest of your steps
}

如果您不想继续使用

for(int i = 0;i <20;i++){
        if(i != 13){
            //Do rest of your steps
        }
        //This should also work it will not do anything when loop is at its 13th iteration.
    }

使用continue会更好。

答案 1 :(得分:1)

如果没有continue,您可以尝试if() else阻止这项工作。

for(int i = 0; i < 20; i++)
{
    if(i == 13)
    {
       // Do the stuff for 13th floor if any
    }
    else
    {
       // Do the stuff for floors other than 13
    }
}

答案 2 :(得分:1)

    public static void main (String[] args)
    {
        Scanner keyboard = new Scanner (System.in);
        DecimalFormat formatter = new DecimalFormat("%#,##0.00");
        int numFloors = 0;
        int numRooms = 0;
        int totalRooms = 0;
        int numOccupied = 0;
        int totalOccupied = 0;
        int percentOccupied = 0;

        System.out.println("Please enter the number of floors in the hotel: ");
        numFloors = keyboard.nextInt();

        while (numFloors <1)
        {
            System.out.println("You have entered an invalid number of floors. ");
            System.out.println("Please enter the number of floors in the hotel: ");
            numFloors = keyboard.nextInt();
        }

        for (int counter = 1; counter <=numFloors; counter++)
        {
            System.out.println("Please enter the number of rooms on floor #: " + counter);
            numRooms=keyboard.nextInt();
            //REMOVE totalRooms += numRooms; from here

            while (numRooms <10)
            {
                System.out.println("You have entered an invalid number of rooms. ");
                System.out.println("Please enter the number of rooms on floor #: " + counter);
                numRooms = keyboard.nextInt();
            }
            totalRooms += numRooms;  //ADD it here

            System.out.println("Please enter the number of occupied rooms on floor #: " + counter);
            numOccupied = keyboard.nextInt();
            totalOccupied += numOccupied;
            // *not sure of how to do this* percentOccupied = totalOccupied/totalRooms;
        }

        System.out.println("The hotel has a total of " + totalRooms + " rooms.");
        System.out.println(totalOccupied + " of the rooms are occupied.");
        System.out.println (percentOccupied + "% of the rooms are occupied.");
    }