2013-04-26 4 views
0

У меня есть следующий кодПочему я получаю эти синтаксические ошибки?

 image1.setOnClickListener(new View.OnClickListener() { 

     int randInt = new Random().nextDouble() < 0.5 ? 1 : 2; 

     if (randInt.equals(1)) { 
      public void onClick(View view) { 
       if (isFirstImage) {  
        applyRotation(0, 90); 
        applyRotation(0, 90); 
        isFirstImage = !isFirstImage; 

       } else {  
        applyRotation(0, -90); 
        applyRotation(0, -90); 
        isFirstImage = !isFirstImage; 
       } 
      } 
     } else if (randInt.equals(2)) { 
      public void onClick(View view) { 
       if (isFirstImage) {  
        applyRotation(0, 90); 
        applyRotation(0, 90); 
        applyRotation(0, 90); 

        isFirstImage = !isFirstImage; 

       } else {  
        applyRotation(0, -90); 
        applyRotation(0, -90); 
        applyRotation(0, -90); 
        isFirstImage = !isFirstImage; 
       } 
      } 
     } 

    }); 

У меня есть «ошибка синтаксиса, вставьте„“чтобы завершить заявление» в строке, где я объявляю мое число, когда я ясно действительно есть «;» там. У меня есть несколько «Синтаксическая ошибка на токене» («,: ожидается» и «Синтаксическая ошибка на токене»), «ожидается», где у меня есть »public void onClick (View view) {« У меня есть «Синтаксическая ошибка , вставьте «}», чтобы завершить заявление », но я повсюду выглядел, и, похоже, я закрыл все свои высказывания.

Я думаю, что Eclipse дает мне ложные ошибки, и я пробовал Project> Clean, но это не решило его. Пожалуйста, помогите, спасибо!

+0

Вы не можете вызвать '.equals' в int. просто используйте '==' – Phil

ответ

4

Я думаю, что отсутствует ";" ошибка ложна. Ваша настоящая проблема заключается в том, как вы пытаетесь объявить слушателей onClick. Блоки if не могут содержать декларации методов, подобные этому. Попробуйте следующее:

image1.setOnClickListener(new View.OnClickListener() { 

    int randInt = new Random().nextDouble() < 0.5 ? 1 : 2; 

    @Override 
    public void onClick(View view) { 
     if (randInt == 1) { 
      if (isFirstImage) {  
       applyRotation(0, 90); 
       applyRotation(0, 90); 
      } else {  
       applyRotation(0, -90); 
       applyRotation(0, -90); 
      } 
     } else if (randInt == 2) { 
      if (isFirstImage) {  
       applyRotation(0, 90); 
       applyRotation(0, 90); 
       applyRotation(0, 90); 
      } else {  
       applyRotation(0, -90); 
       applyRotation(0, -90); 
       applyRotation(0, -90); 
      } 
     } 
     isFirstImage = !isFirstImage; 
    } 
}); 

Это исправит randInt в то время OnClickListener прикрепляется к image1. Если вы хотите случайное вращение при каждом щелчке image1, переместите объявление randInt как первый оператор самого метода onClick.

+1

, он, вероятно, захочет вызвать 'nextDouble()' внутри каждого 'onClick()', иначе тот же 'randInt' будет использоваться для каждого щелчка правой кнопкой? –

+1

@StevenByle - хорошая точка; Я добавлю это к своему ответу. Я не знаю, что фактически хочет выполнить OP. –

+0

Если число равно 1, я хочу, чтобы он вращался дважды, но если число равно 2, я хочу, чтобы он вращался три раза, но это не работает; изображение только щелкает один раз, даже если я дважды вызываю «applyRotation (0,90)». –

Смежные вопросы