Java学院的实践

时间:2015-12-24 00:13:03

标签: java

我是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;  
    }                                     
}   

1 个答案:

答案 0 :(得分:5)

问题在于:

int[] roomNumbers = new int[MAXROOMS];

您正在声明一个数组并初始化它。问题是数组中的值都是零。这是因为当您使用new分配数组时,元素值将根据数组basetype默认初始化:

  • 数字类型的默认初始值为零。
  • bool类型的默认初始值为false
  • 引用类型(类和数组类型)的默认初始值为null

这里有两个简单的解决方案:

  • 为每个数组元素设置初始值;例如使用循环。
  • 不要使用数组来保存房间号码;例如做一些简单的算术并使用你的索引变量(i)来计算房间号。 (想一想......)