我知道我的变量存储信息有问题。

在程序结束时,它会显示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.");
  }
}

最佳答案

osumrsum都是整数,它们表示不带小数的数字。

任何仅使用这两个整数的数学运算都将返回一个整数。

所以osum/rsum将返回


0如果osum < rsum
1如果rsum <= osum < 2*rsum
等等


如果要获取该除法的十进制值,可以


将您的rate定义为double类型,以便包含十进制数字。
在操作中将至少一个变量转换为double


您应该以以下内容结束:

double rate = (((double) osum)/rsum)*100;

10-08 18:11