Я пытаюсь написать программу, которая побуждает пользователя вводить общее количество этажей в отеле, количество комнат на каждом этаже и количество занятых комнат. В конце он должен отображать общее количество комнат, общее количество занятых комнат и процент занимаемых помещений. У меня проблемы с отображением процента занятых комнат. Я использую все числа int.Java: целочисленное разделение округлено вверх
Это уравнение, которое я ставлю:
roomsOccPercentage = (totalRoomsOccupied * 100)/totalRooms ;
Когда я представляю программу на Java бегуна моего профессора это показывает:
65 % of the Rooms are occupied.
Но один мой профессор при условии, выводимый в ответ на 66% вместо этого программа не примет мой файл.
Кто-нибудь знает, что я делаю неправильно? Это ошибка DecimalFormat?
Edit: Вот весь код
import java.util.Scanner;
import java.text.DecimalFormat;
public class hw7_1 {
public static void main(String[]args) {
Scanner keyboard = new Scanner(System.in);
DecimalFormat formatter = new DecimalFormat("#0");
int totalFloors;
int totalRooms = 0;
int numFloors;
int numRooms;
int roomsOccupied;
int totalRoomsOccupied = 0;
int roomsOccPercentage = 0;
//prompting users to input # of floors, no inputs below 1 floor
do {
System.out.println("Please enter the number of floors in the hotel: ");
numFloors = keyboard.nextInt();
if (numFloors < 1) {
System.out.println("You have entered an invalid number of floors. ");
}
}
while (numFloors < 1);
//for loops on how many rooms on each hotel floors
for (int Floors = 1; Floors <= numFloors; Floors++) {
if (Floors == 13) {
continue;
}
do {
System.out.println("Please enter the number of rooms on floor #: " + Floors);
numRooms = keyboard.nextInt();
if (numRooms < 10) {
System.out.println("You have entered an invalid number of rooms. ");
}
} while (numRooms < 10);
System.out.println("Please enter the number of occupied rooms on floor #: " + Floors);
roomsOccupied = keyboard.nextInt();
totalRooms = totalRooms + numRooms;
totalRoomsOccupied = totalRoomsOccupied + roomsOccupied;
roomsOccPercentage = (totalRoomsOccupied * 100)/totalRooms ;
}
System.out.println("\nThe hotel has a total of " + totalRooms + " rooms.");
System.out.println(totalRoomsOccupied + " of the rooms are occupied.");
System.out.println(formatter.format(roomsOccPercentage) + "% of the rooms are occupied.");
}
}
Это скорее всего может быть. Вы могли бы попытаться сделать любой из 1 операндов таким образом, чтобы он больше не был целым делением. 'roomsOccPercentage = ((float) totalRoomsOccupied * 100)/totalRooms;' – SudoRahul
@ Комментарий R.J должно решить вашу проблему. –
Дело в том, что мы еще не изучили этот метод в классе. Есть ли способ новичков? –