Получение значения для увеличения и возврата после каждого увеличения - PullRequest
1 голос
/ 24 февраля 2012

Я пытаюсь увеличить переменную от 0 до 99 и возвращать значение каждый раз, но я не уверен, как я мог это сделать. Вот код, который у меня есть:

public int getValue()
{
  if (currentState == COUNTING)
  {
    for (int i = 0; i <= 99; i++)
    {
      value = i;
    }

    return value;      

  } else {
    return super.getValue();   
  }
} 

Я не уверен, как я мог изменить это, так как в данный момент он возвращает 99. Я знаю, почему, но не знаю, как выполнить то, что я пытаюсь сделать.

Ответы [ 5 ]

4 голосов
/ 24 февраля 2012

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

Ваш код возвращает 99, потому что конечное «значение» вашей переменной цикла «i» равно 99, когда цикл завершается. Вместо этого вы должны попытаться вернуть значения, хранящиеся в целочисленном массиве.

1 голос
/ 24 февраля 2012

В Java функция может вернуться только один раз; в этот момент он выходит из функции. Вас может заинтересовать этот вопрос .

Так что короткий ответ - нет. Если вы можете дать больше контекста относительно того, что вы пытаетесь выполнить, возможно, можно попытаться помочь объяснить хороший способ сделать это на Java.

0 голосов
/ 24 февраля 2012

Имейте переменную класса, которая поддерживает значение, а затем возвращайте увеличенное значение каждый раз, когда getValue () вызывается

private int value=0;
public int getValue()
{
  if (currentState == COUNTING)
  { 
    return value++;
  }
  else
    return super.getValue();   
} 
0 голосов
/ 24 февраля 2012

Если вам нужно сохранить форматирование для каждого числа в отдельной строке, вам нужно будет добавить новую строку \ n или endl .

Если вы пытаетесь просто напечатать 1-99, используя один метод и один возврат, вам нужно будет использовать массив .

0 голосов
/ 24 февраля 2012

Вы можете создать static член и увеличивать его при каждом вызове.

class MyClass
{
   private static int value = 0;
   public int getValue
   {
       if ( value >= 99 )
          return value; //or throw exception, whatever
       else
          return value++;
   }
}

РЕДАКТИРОВАТЬ: Если ваш getValue связан с экземпляром класса, нет необходимости делать value a static.Если вы хотите, чтобы каждый вызов метода возвращал значение приращения, независимо от того, к какому объекту он вызывается, вы должны сделать его static.

...