2014-01-23 2 views
-6

Функция предназначена для сортировки рекорда в игре в соответствии с временем.Проблемы с сортировкой (не с заявлением)

public void sort() 
{ 
    boolean unsorted = true; 
    int i; 

    for (; unsorted; i < this.inputArray.length - 1) 
    { 
     unsorted = false; 
     i = 0; continue; 
     if (Integer.parseInt(this.inputArray[i][1]) <= Integer.parseInt(this.inputArray[(i + 1)][1])) 
     { 
      int tempTime = Integer.parseInt(this.inputArray[i][1]); 
      String tempName = this.inputArray[i][0]; 
      this.inputArray[i][1] = this.inputArray[(i + 1)][1]; 
      this.inputArray[i][0] = this.inputArray[(i + 1)][0]; 
      this.inputArray[(i + 1)][1] = String.valueOf(tempTime); 
      this.inputArray[(i + 1)][0] = String.valueOf(tempName); 
      unsorted = true; 
     } 
     i++; 
    } 
} 

Проблема заключается в том, что IDE вызывает ошибку «не заявление» на «для» петли и ошибки «недостижим заявление» на «если».

Может ли кто-нибудь помочь?

+0

Я думаю, что проблема заключается в инициализации вашего «для» петли. Я не большой java-парень, но если у вас случайная точка с запятой в варианте с C, это может вызвать некоторые проблемы. –

+2

Я не знаю, что это такое ... но это, конечно, неправильно. Вы никогда не добьетесь чего-либо после 'продолжения ', для начала. И учитывая инструкции цикла 'for', похоже, что цикл' while' сделает это намного более удобочитаемым. – nhgrif

+0

Взгляните на учебник для инструкций и попробуйте рефакторинг: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html – mdewitt

ответ

2

Первая ошибка, потому что

i < this.inputArray.length - 1 

не то, что вы можете выполнить - то есть, это не утверждение. Но третья часть в скобках цикла for - это оператор, который будет выполняться в конце каждой итерации цикла.

Вторая ошибка происходит потому, что

continue; 

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

0

Недоступен Заявление: Вы назначаете я = 0, а затем продолжить, и поставил я ++ в конце концов, я никогда не будет ничем иным, кроме 0, поэтому если пункт недоступен

Ваш цикл синтаксис неверен а также:

for (initialization; termination; 
    increment) { 
    statement(s) 
} 
  • выражение инициализации инициализирует цикл; он выполняется один раз, когда начинается цикл.
  • Идентификатор завершения вычисляет значение false, цикл завершается.
  • Выражение приращения вызываются после каждой итерации цикла

(Взято из Oracle DOC)