cch*_*hua 3 java loops for-loop
我有一个for循环方法的问题,只有循环1次是什么问题?在数组中没有任何问题,它能够打印我想要的值.
这是我的代码:
public static void main(String[] args){
String s = "Apple0, Apple1, Apple2, Apple3, Apple4";
String[] word = s.split(",");
StringBuffer str = new StringBuffer();
Integer total = 0;
for (int y = 0; y < word.length; y++){
if(word[y].toString().equals("Apple2") ){
total++;
//str.append(word[y].toString());
}else if(word[y].toString().equals("Apple3") ){
total++;
//str.append(word[y].toString());
}else if(word[y].toString().equals("Apple4") ){
total++;
//str.append(word[y].toString());
}
else if(word[y].toString().equals("Apple1") ){
total++;
//str.append(word[y].toString());
}
}
System.out.println( word[0] + word[1] + word[2] + word[3] + word[4] + word.length);
System.out.println(str + "hihi" + total);
}
Run Code Online (Sandbox Code Playgroud)
其他人已经找到了问题的原因.但是,他们提出的解决方案太具体了......而且很脆弱.(拆分split("\\s*,\\s*")更好但不会处理整个字符串开头/结尾的空格.)
我建议你继续使用split(","),但在测试之前修剪一下; 例如
for (int y = 0; y < word.length; y++) {
String trimmed = word[y].trim();
if (trimmed.equals("Apple2")) {
total++;
//str.append(trimmed.toString());
} else if (trimmed.equals("Apple3")) {
// etcetera
Run Code Online (Sandbox Code Playgroud)
或者更好的是:
String[] words = s.split(",");
for (String word : words) {
String trimmed = word.trim();
if (trimmed.equals("Apple2")) {
total++;
//str.append(trimmed.toString());
} else if (trimmed.equals("Apple3")) {
// etcetera
Run Code Online (Sandbox Code Playgroud)
这将使您的代码工作,无论逗号周围的空格字符以及字符串的开头和结尾.坚固性是好的,特别是如果它几乎没有任何实施成本.
最后,你甚至可以用Java 7 String switch语句替换if/else if/... stuff.
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |