[英]What's wrong with the for() loop in my case?
I'm a beginner in Java and HBase, I want to shorten my code so I use a for-loop in my code. 我是Java和HBase的初学者,我想缩短代码,因此在代码中使用了for循环。 If the input String stumber is "AAAA0000?0", the results should be "AAAA000000","AAAA000010","AAAA000020","AAAA000030" …… "AAAA000090"
如果输入的字符串stumber为“ AAAA0000?0”,则结果应为“ AAAA000000”,“ AAAA000010”,“ AAAA000020”,“ AAAA000030”……“ AAAA000090”
This origin code works well: 此原始代码运行良好:
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);
But after I modify with for-loop, the code failed to give out the results. 但是在用for循环修改后,代码无法给出结果。 Why?
为什么?
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());
Inside for loop should be: 内部for循环应为:
get = new Get((stumber.replace(stumber.charAt(8), (char)(i + '0'))).getBytes());
what gives you i
value as a char
. 是什么让
i
看中了char
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.