2014-02-08 188 views
-1
for (int i = 0; i < str.length(); i ++) // Checks every position of array 
{ 
    arr[i] = str.charAt(i); // Ignore this, not needed 

    if (arr[i] != ',' || arr[i] != '.' || arr[i] != '$') // Checks every position of array to see if any character equals a comma, decimal point, or a dollar sign 
    { 

     // Ignore below 
     /* 
     valueString = String.valueOf(value); 
     numOfAsterisks = arr.length - valueString.length(); 

     for (int asterisk = 0; asterisk <= numOfAsterisks; asterisk ++) 
     { 
      System.out.print("*"); 
     } 

     System.out.println((int)value); 
     */ 
    } 
} 

在这里,我想要做的是检查字符数组,看看数组包含一个逗号,小数点,或者一个美元符号。如果数组不包含任何这些字符,则将执行注释掉的部分(其中指出“忽略下面”)。我在这里唯一的问题是,因为if (arr[i] != ',' || arr[i] != '.' || arr[i] != '$')位于外部for循环之下,所以注释部分将被执行多次。我需要代码只执行一次,但仍然检查数组的每个位置。使用for循环查找数组

回答

3

如果我正确理解你的问题,你真正想要的是这样的:

boolean found = false; 
for(int i = 0; i < str.length; i++) { 
    char c = str.charAt(i); 
    if(c == ',' || c == '.' || c == '$') { 
     found = true; 
     break; 
    } 
} 
if(!found) { 
    /* Your commented-out code */ 
} 

注意,这也可以被配制成这样:

skip: { 
    for(int i = 0; i < str.length; i++) { 
     char c = str.charAt(i); 
     if(c == ',' || c == '.' || c == '$') 
      break skip; 
    } 
    /* Your commented out code goes here. */ 
} 

为您自己选择你喜欢哪一个更多。 :)

+1

aaand你打了我一分钟:D。完全相同的方法,我也有 –

+0

:P我没有想到这一点 –