程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> switch-小白求助,為什麼這段代碼的case“2”未執行

switch-小白求助,為什麼這段代碼的case“2”未執行

編輯:編程解疑
小白求助,為什麼這段代碼的case“2”未執行

int j = 1;
int i = Integer.parseInt(source.getProperty("表單數據從第幾行開始")) - 1;
int lastnum = getNum(source.getProperty("fileName"));
for (int k = 0; k < conditions.length; k++) {
System.out.println(conditions[k]);
switch (conditions[k]) {
case "1":
for (; i < lastnum; i++) {
XSSFRow readrow = readsheet.getRow(i);// 獲取輸入行
Process p = new ProcessRow();
if (p.panduan1(readrow)) {
System.out.println("get1");
XSSFSheet sheet = sc.getSheetAt(0);
XSSFRow outputrow = sheet.createRow(j++);
p.process1(readrow, outputrow);
p.process2(readrow, outputrow);
p.process3(readrow, outputrow);
p.process4(readrow, outputrow);
}
}
case "2":
for (; i < lastnum; i++) {
XSSFRow readrow = readsheet.getRow(i);// 獲取輸入行
Process p = new ProcessRow();
System.out.println("get");
if (p.panduan2(readrow)) {
System.out.println("get2");
XSSFSheet sheet = sc.getSheetAt(0);
XSSFRow outputrow = sheet.createRow(j++);
p.process2(readrow, outputrow);
}
}
default:
break;
}

        輸出結果
        1

get1
get1
2
3
4
輸入完畢

為什麼case 2沒執行

最佳回答:


i值沒有還原,導致執行完case 1時i > lastnum,當執行到case 2的時候i依舊大於lastnum,for循環直接跳出,因此為執行。
你的程序怎麼case之後不跟break?case之後不跟break就會導致進入switch之後所有的case均執行一遍。

sinat_33415638
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved