基于另一个数组中的特定条件将数组中的某个值相乘并将值存储在新数组中?

时间:2013-04-07 22:06:17

标签: java arrays store

我正在创建一个基于数组的程序,帮助计算一些帮助学生掌握技能的辅导员的津贴。该计划接纳导师的数量,然后继续导师姓名,询问导师协助了多少学生,然后询问导师的学位水平(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];
        }    

2 个答案:

答案 0 :(得分:2)

使用String#equals来比较String内容。 ==运算符用于比较Object个引用。由于要比较的2个值的引用不等于,因此不会对数组stipend进行任何薪酬调整。取代

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

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

类似于“MS”和“PhD”字符串检查。

答案 1 :(得分:2)

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

degree[pay] == "some_string"

degree[pay].equals("some_string")

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

degree[pay].equalsIgnoreCase("some_string")

以下是正在发生的事情:当您编写degree[pay] = "some_string"时,您正在检查引用相等,这对您正在执行的操作不起作用,因为常量字符串和生成的字符串将没有平等的参考。 .equals()方法会检查相等的值,这就是您想要的。