2014-02-08 4 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 Я не думал об этом –

Смежные вопросы