Re: помогите написать метод на Java!

Grinko

Народ, напишите, плиз, как должен выглядеть метод, который через каждую X сек возвращает натуральные числа 1,2,3 и т.д.? Язык Java.
Я как-то так писал:
public int timer{
for(int i = 0; i <= 100; i++){
try{Thread.sleep(100);} catch(Exception e){}
//...
}
}

SPARTAK3959

Может печатает, а не возращает? Не void-метод не может возратить большое число раз значение, чем количество его вызовов.Печать делается вроде так:
public void printNums
{
try{
for (int i=1;i<=100;i++)
{
System.out.println(i);
Thread.sleep(1000);
}
}catch(InterruptedException e)
{
}
}

Grinko

Нет, печатать так я могу, а мне надо, чтобы метод именно возвращал натуральные числа.

katrin2201

[телепат-mode]
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Timer.html
[/телепат-mode]
Вообще, вопрос выглядит сильно странно, поэтому есть подозрение, что автор чего-то сильно не понимает.

katrin2201

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

Grinko

Это, допустим, как?
что-то вроде:

Timer t = new Timer;
//....

katrin2201

угу, а потом

TimerTask tt = new TimerTask...
t.schedule(tt, ...);

Grinko

TimerTask абстрактный! У него нельзя создать экземпляр.

Grinko

что мне вообще надо писать?

katrin2201


TimerTask tt = new TimerTask {
public void run {
//your code here
}
};

vall

вот кривой продукт извращённой фантазии =)
 
import java.util.Iterator;
public class Main {
public static class Timer implements Iterable<Integer>, Iterator<Integer> {

private int counter = 0;

private int limit;

public Timer(int limit) {
this.limit = limit;
}

@Override
public Iterator<Integer> iterator {
return this;
}

@Override
public boolean hasNext {
return counter < limit;
}

@Override
public Integer next {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
return counter++;
}

@Override
public void remove {
throw new UnsupportedOperationException;
}
}


public static void main(String[] args) {
for (int i : new Timer(10 {
System.out.println(i);
}
}
}

aleks058

Переходи на C#

static IEnumerable<int> GetValues
{
for (int i = 0; ; i++)
{
yield return i;
Thread.Sleep(1000);
}
}

static void Main(string[] args)
{
foreach (int value in GetValues
{
Console.WriteLine(value);
}
}
Оставить комментарий
Имя или ник:
Комментарий: