我知道我的变量存储信息有问题。
在程序结束时,它会显示0.0的比率。
我一直在尝试找出程序中逻辑或语法上的错误。我相信这可能与变量为0有关,我也曾尝试在count == floor时将函数插入循环。
import javax.swing.*;
public class pickanumber {
public static void main(String[] args) {
int floor=1, rooms, occupants, rsum = 0, osum = 0;
String amount;
do {
amount = JOptionPane.showInputDialog("Enter total floors.");
floor = Integer.parseInt(amount);
} while (floor <= 0);
for (int count = 1; count <= floor; count++) {
if (floor==13) count++;
do {
amount = JOptionPane.showInputDialog("Enter total rooms on floor "+count+".");
rooms = Integer.parseInt(amount);
} while(rooms <= 9);
rsum += rooms;
do {
amount = JOptionPane.showInputDialog("Enter occupants on floor "+count+".");
occupants = Integer.parseInt(amount);
} while ((occupants > rooms)||(occupants < 0));
osum += occupants;
}
int rate = (osum/rsum)*100;
JOptionPane.showInputDialog("occupancy is at "+rate+"% capacity.");
}
}
最佳答案
osum
和rsum
都是整数,它们表示不带小数的数字。
任何仅使用这两个整数的数学运算都将返回一个整数。
所以osum/rsum
将返回0
如果osum < rsum
1
如果rsum <= osum < 2*rsum
等等
如果要获取该除法的十进制值,可以
将您的rate
定义为double
类型,以便包含十进制数字。
在操作中将至少一个变量转换为double
您应该以以下内容结束:
double rate = (((double) osum)/rsum)*100;