2

我正在创建一个基于数组的程序,帮助计算一些帮助学生提高技能的导师的津贴。该程序接收导师的数量,然后输入导师的姓名,询问导师帮助过多少学生,然后询问导师的学位水平(BS、MS、PhD)。导师将根据他们拥有的学位水平获得不同金额的报酬。因此,如果第一位导师(比尔)教过 5 名学生并拥有博士学位(每位学生 20 美元),那么他将获得 100.00 美元的报酬,以此类推(MS = 每位学生 15.00 美元,BS =每名学生 9.50)。

我的问题是,当我输入所有数据后,我只得到 0.0 的工资栏和 0.0 的总津贴。我要做的是基于在学位数组中输入的学位,你将教学数组(也就是教授的学生人数)乘以每个学生的金额,然后将该数字存储在一个名为津贴的新数组中。我已经重新安排,重新命名,并做了我能想到的一切,试图让津贴出现,但我没有选择,变得非常沮丧。因此,如果有人可以帮助我,将不胜感激。

        for(int pay=0; pay<numOfTutors; pay++) {
            if (degree[pay] == "BS") {
                stipend[pay] = taught[pay] * 9.50;
            }
            else if (degree[pay] == "MS") {
                stipend[pay] = taught[pay] * 15.00;
            }
            else if (degree[pay] == "PhD") {
                stipend[pay] = taught[pay] * 20.00;
            }
            sum+=stipend[pay];
        }    
4

2 回答 2

2

用于String#equals比较String内容。==运算符用于比较引用Object。因为被比较的 2 个值的引用不相等,所以不会对数组进行任何薪酬调整stipend。代替

if (degree[pay] == "BS") {

if (degree[pay].equals("BS")) {

同样对于“MS”和“PhD”字符串检查。

于 2013-04-07T22:12:33.327 回答
2

问题是您使用==运算符而不是.equals()方法来检查字符串是否相等。您应该更改表格的行

degree[pay] == "some_string"

degree[pay].equals("some_string")

或者,如果您想要不区分大小写的匹配,您可以使用

degree[pay].equalsIgnoreCase("some_string")

Here's what's going on: when you write degree[pay] = "some_string", you are checking for reference equality, which will not work for what you are doing, because a constant string and a generated string will not have equal references. The .equals() method will check for equal values, which is what you want.

于 2013-04-07T22:13:25.777 回答