[英]What's wrong with the for() loop in my case?
我是Java和HBase的初學者,我想縮短代碼,因此在代碼中使用了for循環。 如果輸入的字符串stumber為“ AAAA0000?0”,則結果應為“ AAAA000000”,“ AAAA000010”,“ AAAA000020”,“ AAAA000030”……“ AAAA000090”
此原始代碼運行良好:
List<Get> gets = new ArrayList<>();
for (String stumber : stumbersArr) {
if(stumber.charAt(8) == '?'){
get = new Get((stumber.replace(stumber.charAt(8), '0')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '1')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '2')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '3')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '4')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '5')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '6')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '7')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '8')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
get = new Get((stumber.replace(stumber.charAt(8), '9')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
}else{
get = new Get(stumber.trim().getBytes());
get.setMaxVersions(versions);
gets.add(get);
}
}
Result[] results = table.get(gets);
但是在用for循環修改后,代碼無法給出結果。 為什么?
List<Get> gets = new ArrayList<>();
for (String stumber : stumbersArr) {
if(stumber.charAt(8) == '?'){
for (int i =0; i<10; i++){
get = new Get((stumber.replace(stumber.charAt(8), 'i')).getBytes());
get.setMaxVersions(versions);
gets.add(get);
}
}else{
get = new Get(stumber.trim().getBytes());
get.setMaxVersions(versions);
gets.add(get);
}
}
Result[] results = table.get(gets);
您可以使用Character.forDigit()將int i轉換為char,例如:
get = new Get((stumber.replace(stumber.charAt(8), Character.forDigit(i, 10))).getBytes());
內部for循環應為:
get = new Get((stumber.replace(stumber.charAt(8), (char)(i + '0'))).getBytes());
是什么讓i
看中了char
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.