#java #recursion #counter
Вопрос:
У меня длинный вывод, и я пытаюсь пронумеровать строки, напечатанные в выводе, чтобы убедиться, что все они печатаются правильно. Я бы просто использовал обычный счетчик в своем методе, но я использую рекурсию для печати всего, поэтому было трудно получить точный подсчет количества печатаемых строк. Как я мог бы создать своего рода статический счетчик, который печатается перед печатью каждой строки, чтобы по существу пронумеровать каждую строку?
Комментарии:
1. Где у тебя проблемы? (1) Определить
int lines
в качестве переменной-члена класса. (2)lines
после каждой напечатанной строки. Кстати, он должен быть (и должен быть) статичным только в том случае, если ваша функция печати статична.2. Передайте значение строки в рекурсивный метод и верните его в качестве результата (применяя обратно к локальной переменной). В качестве альтернативы, если метод возвращает какое-либо другое значение (например, значение выхода), вы можете инкапсулировать количество строк в POJO и передать его вместо этого
3. Или перенаправьте результаты в файл и запустите wc-l в файле, чтобы посчитать строки. Или откройте файл результатов в vi с включенными номерами строк.
4. Ах, теперь я понимаю, что я делал, у меня было два рекурсивных вызова, и я думаю, что просто продолжал помещать инструкцию печати в неправильное место. Спасибо! Я думал, что мне придется создать какой-то метод подсчета, но это намного проще.
5. Пожалуйста, не редактируйте заголовок, чтобы казалось, что вопрос закрыт. Вопрос закрывается, когда сообщество или модератор определяет, что вопрос не соответствует рекомендациям нашего сайта. Если вы указываете, что вопрос закрыт, когда это не так, вы обходите нашу систему модерации. Если ответ решил вашу проблему, пожалуйста, подумайте о том, чтобы щелкнуть зеленую галочку, чтобы принять ее. Принятие ответа отделено от того, чтобы быть закрытым или открытым.
Ответ №1:
Вы можете просто создать что-то подобное CounterHolder
и увеличивать его каждый раз, когда пытаетесь получить ценность:
public class CounterHolder{
private static int counter = 0;
private CounterHolder(){}
public static int getCounter(){
return counter ;
}
}
UPD:
Вы также можете добавить пользовательский метод печати здесь:
public class CounterHolder{
private static int counter = 0;
private CounterHolder(){}
public static void print(String msg){
System.out.println(String.format("%d -> %s", counter , msg));
}
}