Java: Integer division de la tour

Je suis en train d'écrire un programme qui demande à l'utilisateur d'entrer le montant total de la étages dans un hôtel, le nombre de chambres à chaque étage, et le nombre de occupé chambres. À la fin, il doit afficher le nombre total de chambres, nombre total de chambres occupées et le pourcentage de chambres occupées. Je vais avoir des problèmes avec l'affichage du pourcentage de chambres occupées. Je suis l'aide de tous les int des nombres.

C'est l'équation que j'ai mis:

roomsOccPercentage = (totalRoomsOccupied * 100) / totalRooms ;

Quand je soumettre le programme à mon professeur de Java runner il affiche:

65 % of the Rooms are occupied.

Mais l'un de mes professeur fourni en sortie la réponse de 66% au lieu de sorte que le programme n'accepte pas mon fichier.

Personne ne sait ce que je fais mal? Est-il un DecimalFormat erreur?

Edit: Voici le code entier

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.");
}
}
Il pourrait très probablement être le cas. Vous pouvez essayer de jeter un 1 des opérandes de sorte qu'il n'est plus une division entière. roomsOccPercentage = ((float)totalRoomsOccupied * 100) / totalRooms;
commentaire devrait résoudre votre problème.
Le truc, c'est que nous n'avons pas à apprendre cette méthode dans la classe encore. Est-il plus du débutant?
Vous n'avez pas utilisé le double ou float type de données?
nous avons. Je voulais dire nous n'avons généralement pas utilisé l'opérateur de coulée sur nos calculs encore. Je ne sais à partir de la lecture sur la programmation. Les Mathématiques.ceil semblait avoir travaillé, mais QUE nous n'avons pas allé plus en classe encore à tous. Merci!!!!

OriginalL'auteur Sam Young | 2013-11-18