2013-04-22 4 views
0

Это моя первая реальная попытка Java, внутри андроидной активности.Лучший способ использовать для цикла?

Код рассчитывается исходя из начальной точки countStart и конечной точки count1. Я не включил весь класс, но после toString он создает текстовое представление и отображает строку, сгенерированную из массива (очевидно, я думаю ...)

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

Может ли кто-нибудь сказать мне, как сделать этот код более эффективным? (Меньше строк, менее запутанным, быстрее, меньше использование памяти)

//get the message from the intent 
    Intent intent = getIntent(); 
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
    //convert string to double 
    double count1 = Double.parseDouble(message); 
    //declare variables and arrays 
    double[] countArray; 
    double countStart = 3.5; 
    //initialize array with exact number of elements needed 
    countArray = new double[((int) (count1-countStart)) +1]; 

    //counts from countStart to count1 without going over count1 
    for(double i=0; i<(((int) count1-countStart) + 1); i++) { 
     if ((countStart+i)>count1) { 
      break; 
     } else { 
      countArray[((int) i)] = countStart+i; 
     } 

    } 

    //convert array to string 
    String mensage = Arrays.toString(countArray); 
+0

Вопросы проверки кода принадлежат http://codereview.stackexchange.com. –

ответ

1

В качестве основного правила большого пальца, что вы вычислить что-то сохранить его в переменной. Это упрощает работу и предотвращает запуск нескольких операций.

double count1 = Double.parseDouble(message); 
double countStart = 3.5; 

int resultCount = (int)(count1 - countStart) + 1; 
double results = new double[resultCount]; 

for(double i = 0; i < resultCount; ++i) { 
    double result = countStart + i; 
    if (result > count1) { 
     break; 
    } else { 
     results[i] = result; 
    } 
} 
+0

Спасибо, это имеет смысл и намного чище! –