Я хочу вызвать методы внутри цикла до тех пор, пока не будет выполнено условие (reps> = 1000), а затем перейдем за пределы цикла и проверим, какой метод был более эффективен, затем перейдите в старый метод и проигнорируйте вызов метода, который был наименее эффективным. Это возможно? Вот мой пример кода:Могу ли я проверить условие внутри цикла for и если оно выполнено, игнорировать вызов метода внутри цикла?
// Set the number of times each method is called
public void setReps(String target, String[] sa, long reps) {
shuffleArray(sa); // Shuffle the order of Strings in array
for (int i = 0; i < reps; i++) {
linearStringSearch(target, sa);
backwardLinearStringSearch(target, sa);
counter(); // counts winner
if (reps >= 1000)
chooseAlgorithm(target, sa);
}
Таким образом, для приведенного выше кода, я буду испытывать linearStringSearch() и backwardLinearStringSearch(), чтобы увидеть, который является более эффективным после 1000 циклов, а затем я хочу, чтобы перейти обратно и игнорировать либо linearStringSearch() или backwardLinearStringSearch() на основе результата. Я мог бы написать новый цикл в методе selectAlgorithm(), но, если возможно, я предпочел бы вернуться к старой.
я мог бы использовать [шаблон Strategy] (http://en.wikipedia.org/wiki/Strategy_pattern). Вы можете определить метод «stringSearch» в интерфейсе, реализовать его с помощью 'linear' и' reverse linear' search (s) ... затем написать еще одну реализацию, которая проверяет (a), (b) перед ее выбором. –
Это хорошо выглядит. Я дам ему выстрел – LooMeenin