【问题标题】:How do i fix this counter in a while loop?如何在 while 循环中修复此计数器?
【发布时间】:2014-03-22 17:17:31
【问题描述】:
  //Name: Justin 

  import java.util.Scanner;

  public class hotelOccupancy
  {

  public static void main(String[] args)
  {

  Scanner keyboard = new Scanner(System.in);
  int floors, roomNo, occRooms, emptyRooms, occRoomsT = 0, roomNoT = 0;
  double occupancyRate;

  System.out.print("Enter the amount of floors in the hotel(must enter at least 1): ");
    floors = keyboard.nextInt();

  while(floors > 0)
     {
  System.out.print("Enter the amount of rooms on floor " + floors + ":");
    roomNo = keyboard.nextInt();

     if(roomNo < 10)
     {
  System.out.println("There is a minimum of 10 rooms per floor");
  System.out.print("Enter the amount of rooms on floor " + floors + ":");
    roomNo = keyboard.nextInt();
     }

  System.out.print("Enter the amount of rooms on floor " + floors + " that are occupied: ");
    occRooms = keyboard.nextInt();

     if(occRooms < 0 || occRooms > roomNo)
     {
  System.out.println("Please enter a valid number of occupied rooms");
  System.out.print("Enter the amount of rooms on floor " + floors + " that are occupied: ");
    occRooms = keyboard.nextInt();
     }

   occRoomsT = occRoomsT + occRooms;
   roomNoT = roomNoT + roomNo;  
   floors--;
   }

  occupancyRate = occRoomsT / roomNoT;
  emptyRooms = roomNoT - occRoomsT;

  System.out.println("The total amount of rooms is: " + roomNoT);
  System.out.println("The total amount of occupied rooms is: " + occRoomsT);
  System.out.println("The occupancy rate is: " + occupancyRate);
  System.out.println("The amount of vacant rooms is: " + emptyRooms);

  }
  }

你好,这个程序是用来计算酒店的入住率、房间总数、占用房间总数和空置房间总数的。输入是楼层的数量、每层的房间数量以及给定楼层的占用房间数量。输入输入数据后,入住率始终为 0.0,这是我的问题。我感觉问题出在我的变量计数器上:occRoomsT 和 roomNoT。

【问题讨论】:

  • 你在做整数运算而不是浮点运算。在执行除法之前将变量转换为floatdouble
  • 顺便说一句,如果您写过sscce.org,您可能已经自己发现了问题(与循环完全无关)。
  • @SJuan76 我将 emptyRooms、roomNoT 和 occRoomsT 变量更改为双精度,现在程序可以完美运行。谢谢!

标签: java while-loop counter


【解决方案1】:

随便做,

occupancyRate = ((double)occRoomsT) / roomNoT;

房间的总数总是一个整数,将它们声明为双精度不是一个好习惯,与整数相比,这会占用更多空间。

【讨论】:

    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 2020-09-15
    • 2017-06-21
    • 2015-03-21
    • 2016-04-02
    • 2019-05-02
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多