2012-05-10 3 views
1

Привет Я использую метод, который должен возвращать последующие значения из цикла. Но оператор return работает вне цикла. Как вернуть значение в цикле?Как вернуть значение из цикла?

Вот код:

for (int i = 0; i < list.size(); i++) 
{ 
    Iterator <String> it1 = //getting some list values 
    double min = Double.parseDouble (it1.next()); 
    double temp1 = 0; 
    while (it1.hasNext()) { 
     if (it != null) 
     { 
      temp1 = Double.parseDouble (it1.next()); 
     }         
     if (temp1 < min) 
      min = temp1; 
    } 
} 
return min; 

Я хочу вернуть мин значение в пределах цикла. Как это возможно? Пожалуйста, помогите мне .. Заранее спасибо ..

+3

Вы попробовали? – Jeffrey

+0

Вам все равно нужно просмотреть весь список, чтобы найти значение min, чтобы вы не могли вернуть его из цикла. Если вы хотите более аккуратный способ сделать это, вы должны создать свой собственный Компаратор для своего объекта, чтобы вы могли делать Collections.sort (myList ) и получить минимальное значение thay way (первый или последний элемент в зависимости от вашего компаратора) – Ozzy

+1

Ваш Итератор возвращает null, но говорит, что hasNext? –

ответ

0

A) Вы можете return из петли.

B) Более «структурированный» подход заключается в том, чтобы установить переменную на некоторое фиктивное значение/значение по умолчанию перед циклом, а затем установить его в допустимое значение в цикле перед выполнением break. Верните значение при выходе из цикла.

+0

Спасибо за ваш ответ .. –

+0

Можете привести пример? Пожалуйста ... Я не могу это понять. –

+0

Я пробовал. но все же он показывает ошибку. Я устанавливаю переменную вне цикла и возвращаю внутри цикла for. но показывает ошибку .. –

4

Это делается так же, как возврат за пределы цикла, за исключением того, что вам необходимо убедиться, что ваш метод вернет значение при любых обстоятельствах (исключая исключенные исключения и т. Д.). Ниже приведен код с возвратом в цикле for.

for(int i=0;i<list.size();i++) 
{ 
    Iterator<String> it1 = //getting some list values 
    double min = Double.parseDouble(it1.next()); 
    double temp1=0; 
    while(it1.hasNext()){ 
     if(it!=null) 
     { 
      temp1 = Double.parseDouble(it1.next()); 
     }         
     if(temp1 < min) 
      min = temp1; 
    } 
    return min; 
} 
return 0; 

Хотя это, скорее всего, не реализует вашу функцию правильно, это показывает, что возвращение в пределах цикла возможно. Он также полностью устраняет необходимость в цикле for, но, как я уже говорил, этот код является просто примером, показывающим, что возвращение внутри цикла возможно.

+1

В этом случае вам не нужен цикл 'for', который всегда запускается для первого значения, и он запускается только один раз. – nnhthuan

+0

Я знаю; Я просто показывал, что можно вернуться в цикл. Я не стал переписывать его метод. – Vulcan

+0

Okie. Я понял. На самом деле, я не знаю, зачем ему это нужно, потому что логика не в порядке. Я думаю, он даже не исследовал об этом, прежде чем спрашивать здесь. – nnhthuan

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