为什么在循环运行后没有设置此变量?

时间:2015-08-19 16:37:34

标签: java loops if-statement for-loop

我无法获取在for循环期间修改的变量,以在退出循环后保留新值。

所以我有一个名为'outputP'的数组,它存储了String值。然后我有一个带有嵌套if语句的for循环,它检查另一个String值是否与outputP中的一个字符串匹配,然后为int变量'visitCode。'设置一个值:

 String[] outputP = { "SC", "BL", "V04", "V06" };

 int index = folder.getName().indexOf("_R");
 String[] split = folder.getName().substring(index +1).split("_");
 subjectInfo = new String[]{folder.getName().substring(0,index), split[0], split[1]};

 if (subjectInfo[0].charAt(0) != 'S'
     || subjectInfo[1].charAt(0) != 'R'
     || Arrays.asList(outputP).contains(subjectInfo[2] != true ){ 

     //Code here outputs error message
 }

 int groupCode;
 int visitCode = 0;

 groupCode = Integer.parseInt(subjectInfo[1].substring(1));

 for (int i = 0; i < outputP.length; i++)
 {
      if (subjectInfo[2] == outputP[i])
      {
           visitCode = i + 1;
      }
 }

在调试期间,我在一次运行期间验证了outputP [0]和subjectInfo [2]都是“SC”,当我单步执行代码时,它跳过if语句并且visitCode等于0.我也包含在第一个if语句之上,因为它的功能正如您所期望的那样,并且认识到subjectInfo [2](设置为“SC”)是一个也在outputP数组中的字符串。有没有人看到我遗漏的东西会导致编译器跳过嵌套的if语句?

提前感谢任何可以提供帮助的人。

1 个答案:

答案 0 :(得分:2)

您不应使用==来比较字符串。您应该使用String.equals()String.equalsIgnoreCase()