我是Java初学者,也是本网站的新手。
我正在学习数组和方法,不幸的是我被困住了
问题是:

一家医院可容纳150名患者。
每个房间可容纳3位患者。
医院向患者收取150美元的住院费。
如果每个房间有3位病人入住,
医院会另外收取$ 50。
提示用户输入患者人数并显示患者总数,所有费用的总计。

我认为,我想为每个房间创建一个平行的房间数量数组,并为每个房间创建另一个病人数量数组。

问题是:程序每次询问以下内容。
输入房间0的患者数
输入房间0的患者数
输入房间0的患者数
代替:
输入#1房间的患者数量
输入#2房间的患者数量
输入#3房间的患者数量

因此,我认为这是一个逻辑错误,因为roomNumbers [i]不会一直更新到1号室,2号室,等等,它一直一直只请求0号室,欢迎大家指教,因为我正开始为此新课程学习下学期。我的逻辑有道理吗?
非常感谢你。

import javax.swing.JOptionPane;

public class Pingo {
    public static void main(String[] args) {
        final int MAXROOMS=50;
        int[] roomNumbers = new int[MAXROOMS];
        int [] patientQuantity = new int [roomNumbers.length];
        int numPatients=getNumberOfPatients(roomNumbers,patientQuantity);
    }


    public static int getNumberOfPatients(int[] roomNumbers, int []patientQuantity){
        int numPatients=0;

        for(int i=0; i<patientQuantity.length; i++){
            numPatients=Integer.parseInt(JOptionPane.showInputDialog("Enter amount of Patients for room:"
                    + roomNumbers[i] ));
            patientQuantity[i]=numPatients;
        }
        return numPatients;
    }
}

最佳答案

问题在这里:

int[] roomNumbers = new int[MAXROOMS];

您正在声明一个数组并对其进行初始化。问题在于数组中的值都为零。这是因为当您使用new分配数组时,元素值将根据数组的基本类型进行默认初始化:
  • 数字类型的默认初始值为零。
  • bool类型的默认初始值为false
  • 参考类型(类和数组类型)的默认初始值为null

  • 这里有两个简单的解决方案:
  • 为每个数组元素设置初始值;例如使用循环。
  • 不要使用数组来保存房间号;例如做一些简单的算术,然后使用索引变量(i)计算房间号。 (考虑一下...)
  • 08-03 13:05