2013-08-23 23 views
3

我知道我做錯了什麼,但我真的不知道它是什麼,我想要完成的是switch語句知道如果一個ImageView不見了,然後讓我知道一個人走了。如果兩個圖像視圖消失,則移至數字2,然後移至數字3。它的工作原理與一個號碼,但沒有提出兩項二號如果寫到這裏變量不會增加一個等於正確的開關大小寫方法

此代碼工作代碼

  if (numOne == ImageView.GONE) { 
       Toast.makeText(.......).show() 
      } 
     if (numTwo == ImageView.GONE + 2) { 
        Toast.makeText(.......).show() 
      } 

據我所知,它不會流過if語句,如果第一個說法是正確的,這就是爲什麼我需要一個switch語句,因此經過他們都

這裏是我的SWITCH STATEMENT ** EDITED SWITCH STATEMENT

public void checkIfCorrect() { 
     //checking the game to see if the numbers are correct 

      int numOne = ImageView.GONE; 
     int numTwo = ImageView.GONE + 2; 
     int numThree = ImageView.GONE + 3; 
     int numFour = ImageView.GONE + 4; 
     int numFive = ImageView.GONE + 5; 
     int numSix = ImageView.GONE + 6; 
     int numSeven = ImageView.GONE + 7; 
     int numEight = ImageView.GONE + 8; 
     int numNine = ImageView.GONE + 9; 
     int numTen = ImageView.GONE + 10; 

     switch (iGone = 0){ //tried using switch (ImageView.GONE) didn't work 
     case 1: 
      if (numOne == ImageView.GONE) { 
       Toast.makeText(this, "One Gone Now Put two in the basket", Toast.LENGTH_LONG).show(); 

      }; 
     break; 
     case 2: 
      if (numTwo == ImageView.GONE + 2){ 
      Toast.makeText(this, "Two Gone Now Put Three in the basket", Toast.LENGTH_LONG).show(); 
      }; 
     break; 
     case 3: 
      if (numThree == ImageView.GONE + 3) { 
       Toast.makeText(this, "Three Gone Now Put Four in the basket", Toast.LENGTH_LONG).show(); 

      } 
     break; 
     case 4: 
      if (numFour == ImageView.GONE + 4){ 
      Toast.makeText(this, "Four Gone Now Put Five in the basket", Toast.LENGTH_LONG).show(); 
      } 
     break; 
     case 5: 
      if (numFive == ImageView.GONE + 5) { 
      Toast.makeText(this, "Five Gone Now Put two in the basket", Toast.LENGTH_LONG).show(); 
      } 
     break; 

     } 

再次我試圖完成的是當一個ImageView不見了,讓我知道並告訴我一個不存在然後移動兩個從0開始計數到兩個,然後一旦你完成第二個開始再次在0數到3號ECT ......

修改的內容IM試圖做

那麼什麼,我試圖做的是數到10.這樣通過去除imageviews,當ImageView的命中一個特定的位置它將被刪除,我想要這個代碼,我張貼上面檢查有多少imageViews被刪除,說如果0被刪除即時消息在1號,如果1圖像視圖被刪除即時在2號等等... ....請讓我知道如何使它更加清晰

回答大家的問題

出於某種原因,它不會讓下面大家我的評論像我有一個限制或東西,所以我要去解釋這一點更 @Shiva,我只希望它去的情況下一事一後,如果我說這會幫助大家瞭解

代碼爲我imageViews之一可能完成

   public boolean onTouch(View v, MotionEvent event) { 
        int x = (int)event.getX(); 
        int y = (int)event.getY(); 

        switch(event.getActionMasked()) { 
         //touch down so check if finger is on ball 
         case MotionEvent.ACTION_DOWN: 
          // 



         break; 

         case MotionEvent.ACTION_MOVE: 
          //moves the image with the finger 
          if (mImageView16.getX() > 0 && mImageView16.getY() >0) { 
           mImageView16.setX(x + mImageView16.getX()); 
           mImageView16.setY(y + mImageView16.getY()); 

          }// color square 50 50 
          if (mImageView16.getX() >= 430 && mImageView16.getX()<= 470 && mImageView16.getY() >= 80 && mImageView16.getY() <= 120) { //colorsquare RGBY 
           mImageView16.setVisibility(gone);  

          } else { 

           } 
          break; 

         case MotionEvent.ACTION_UP: 
          // touch drop will do things here after drop 
          checkIfCorrect(); 



       } 

        return true; 
      }  

       }); // one more bracket then end of class 
     } // end of class 

現在即時調用檢查是否正確後,丟棄ImageView,現在當我打電話檢查是否正確我想知道,如果類檢查是否正確和他們是什麼號碼。如果他們在第一個數字1上,則計數到第一。如果他們在2號,然後從0個圖像開始算到2號,我希望這可以解決問題。

@nachokk不會使iGone成爲布爾值,因此使它與switch語句不兼容?再次我知道這應該是一個評論,但我的意見不工作?

確定由於某些原因10

現在我加入這一點,它增加通過case語句會從1至5

評論不會通過IE瀏覽器行,所以我能夠找到的決議我需要答案,我在完成命令時,需要通過每個case語句循環,這裏是它是怎麼做

代碼

 public void checkIfCorrect() { 
     //checking the game to see if the words are correct 

     //counting my numbers and image views gone 
     int numOne = ImageView.GONE; 
     int numTwo = ImageView.GONE + 2; 
     int numThree = ImageView.GONE + 3; 
     int numFour = ImageView.GONE + 4; 
     int numFive = ImageView.GONE + 5; 
     int numSix = ImageView.GONE + 6; 
     int numSeven = ImageView.GONE + 7; 
     int numEight = ImageView.GONE + 8; 
     int numNine = ImageView.GONE + 9; 
     int numTen = ImageView.GONE + 10; 

     switch (iGone++){ 
     case 0: 

      if (numOne == ImageView.GONE) { 
       Toast.makeText(this, "One Gone Now Put one more to get to 2", Toast.LENGTH_LONG).show(); 
       iGone = 1; 
      } 
      break; 
     case 1: 
      if (numTwo == ImageView.GONE + 2){ 
      Toast.makeText(this, "Two Gone Now Put Three in the basket", Toast.LENGTH_LONG).show(); 
       iGone = 2; 
      } 

      break; 
     case 2: 
      if (numThree == ImageView.GONE + 3) { 
       Toast.makeText(this, "Three Gone Now Put Four in the basket", Toast.LENGTH_LONG).show(); 
        iGone = 3; 
      } 
     break; 
     case 3: 
      if (numFour == ImageView.GONE + 4){ 
      Toast.makeText(this, "Four Gone Now Put Five in the basket", Toast.LENGTH_LONG).show(); 
       iGone = 4; 
      } 
     break; 
     case 4: 
      if (numFive == ImageView.GONE + 5) { 
      Toast.makeText(this, "Five Gone Now Put two in the basket", Toast.LENGTH_LONG).show(); 
      iGone = 5; 
      } 
     break; 

但即時通訊試圖acomplish不解決

爲了更好地解決我的問題,我試圖讓iGone的值= case case語句中。我希望iGone在每次ImageView.getVisibility ==消失時增加1;去了='s ImageView.GONE;這裏是例如

**gone code** 

    gone = ImageView.GONE; 

現在做的事情每個圖像更清晰的代碼是一類圖像5(),image6(),......多達16個的所有類是完全除變量相同它們的圖像視圖相等。

現在如果你看看上面你會看到image16觸摸類(

),(mImageView16)

如何,當它擊中的setX的和SETY cordinates我讓它= iGone + 1,這是我曾嘗試

試過這對每個圖像類

  public boolean onTouch(View v, MotionEvent event) { 
      int x = (int)event.getX(); 
      int y = (int)event.getY(); 

      switch(event.getActionMasked()) { 
        //touch down so check if finger is on ball 
       case MotionEvent.ACTION_DOWN: 
         // 



       break; 

       case MotionEvent.ACTION_MOVE: 
        //moves the image with the finger 
        if (mImageView5.getX() > 0 && mImageView5.getY() > 0) { 
         mImageView5.setX(x + mImageView5.getX()); 
         mImageView5.setY(y + mImageView5.getY()); 

        } //color square 1 
       if (mImageView5.getX() >= 430 && mImageView5.getX()<= 470 && mImageView5.getY() >= 80 && mImageView5.getY() <= 120) { //colorsquare RGBY 
         mImageView5.setVisibility(gone); 

        } 
       if (mImageView5.getVisibility() == gone) { //colorsquare RGBY 
         ++iGone; //HERE IS WHERE I TRIED IT 
       //I have also tried iGone = iGone + 1; and iGone++; nothing works 


         } 
        break; 

       case MotionEvent.ACTION_UP: 
        // touch drop will do things here after drop 
        checkIfCorrect(); 

     } 

      return true; 
    }  

     }); 

出於某種原因iGone = SA不同數量的,每次我知道這是因爲我所謂的checkifcorrect類中舉杯言這是W級第i個switch語句

檢查是否正確的類

 public void checkIfCorrect() { 

     //checking the game to see if the words are correct 

     switch (iGone){ 
     case 1: 

       Toast.makeText(this, "One Gone Now Put one more to get to 2", Toast.LENGTH_LONG).show(); 
      break; 
     case 2: 
      Toast.makeText(this, "Two Gone Now Put Three in the basket", Toast.LENGTH_LONG).show(); 


      break; 
     case 3: 
       Toast.makeText(this, "Three Gone Now Put Four in the basket", Toast.LENGTH_LONG).show(); 

     break; 
     case 4: 
      Toast.makeText(this, "Four Gone Now Put Five in the basket", Toast.LENGTH_LONG).show(); 
     break; 
     case 5: 
      Toast.makeText(this, "Five Gone Now Put two in the basket", Toast.LENGTH_LONG).show(); 
     break; 

     } 

     Toast.makeText(this, "The amount is" + iGone + "Yeah", Toast.LENGTH_LONG).show(); 

    } 

林非常困惑,爲什麼iGone保持=每一次不同的數字。

好,所以現在的主要問題是。如何讓iGone與圖像瀏覽量保持一致,以便它可以調用正確的開關盒語句?

+0

聽起來像你想要的遞歸方法。所以如果你的方法在你的Toast.makeText之後被稱爲toastVisibility(),你會想再次調用toastVisibility()。 –

+0

即時閱讀遞歸現在,但我想要記錄ImageViews.GONE的數量,所以如果一個ImageView.Gone是完成它結束case語句之一,然後移動到第二個case語句不重複第一個。所以根據第一個case語句之後的遞歸我想要做if(ImageView.GONE = 1){return 0;並移動到第二個案例聲明 –

+0

測試意見 –

回答

1

ok因此,我能夠找到解決方案,我需要的答案,我需要通過每個案例聲明循環完成時命令,這裏是它是怎麼做

代碼

public boolean onTouch(View v, MotionEvent event) { 
       int x = (int)event.getX(); 
       int y = (int)event.getY(); 

       switch(event.getActionMasked()) { 
        //touch down so check if finger is on ball 
        case MotionEvent.ACTION_DOWN: 
         // 



        break; 

        case MotionEvent.ACTION_MOVE: 
         //moves the image with the finger 
         if (mImageView25.getX() > 0 && mImageView25.getY() >0) { 
          mImageView25.setX(x + mImageView25.getX()); 
          mImageView25.setY(y + mImageView25.getY()); 

         }// color square 50 50 
         if (mImageView25.getX() >= 430 && mImageView25.getX()<= 470 && mImageView25.getY() >= 80 && mImageView25.getY() <= 120) { //colorsquare RGBY 
          mImageView25.setVisibility(gone);  

         } else { 

          } 

         break; 

        case MotionEvent.ACTION_UP: 
         // touch drop will do things here after drop 

         if (mImageView25.isShown() != true) {//here is what was changed 
           iGone++;//what was changed 
           } 
         checkIfCorrect();//checking if correct moved after the if statement 


      } 

       return true; 

檢查是否正確類

 public void checkIfCorrect() { 

     //checking the game to see if the words are correct 
     iGone = iGone; 

     switch (iGone){ 
     case 1: 

       Toast.makeText(this, "One Gone Now Put one more to get to 2", Toast.LENGTH_LONG).show(); 

       break; 
     case 3: 
      Toast.makeText(this, "Two Gone Now Put Three in the basket", Toast.LENGTH_LONG).show(); 


      break; 
     case 6 : 
       Toast.makeText(this, "Three Gone Now Put Four in the basket", Toast.LENGTH_LONG).show(); 

     break; 
     case 10: 
      Toast.makeText(this, "Four Gone Now Put Five in the basket", Toast.LENGTH_LONG).show(); 
     break; 

一些底部類的不包括在內,因爲它不涉及

我正在增加一定數量的病例陳述,因爲wh這個數字和我想要調用的case語句相同。例如,iGone如果在其下降時增加1,並且imageview的可見性不可見,則

因此,當imageview被移除時,它將增加1,1,1,所以最終iGone將會= 3當它等於3時,它會調用第三個case語句,當它等於10時,它將調用該特定的case語句,因此模擬iGone從0開始的效果。

因此,爲了創建計數部分,我需要用戶數到1,然後我需要他們數到2和3,所以第四。它的計算方式是當圖像視圖消失時意味着當一個圖像視圖消失爲1,並且計數到一個是完整的。然後我需要用戶從0開始計數到2,所以當第二個imageview消失時,我需要調用第二個case語句。但如果我使用情況2: 那麼我試圖完成的工作將不起作用,因爲系統不知道第二個我們從0開始(除非我告訴它)。但是如果我告訴系統我開始0那麼它只會再次調用第一個case語句,因爲iGone會= 1.

這不是我想要或需要的。我需要第二個病例聲明,因此我實際上使用了我的大腦,並說:「好吧,我們知道一個ImageView已經消失了,我需要兩個更多的imageViews等於2(但從邏輯上講,我們知道這將是3,因爲1個圖像瀏覽器消失了+ 2個圖像瀏覽器消失了= 3我們顯然知道),我該怎麼做? 「哦,我知道,我要打電話給案例3:作爲我的第二個案例聲明,因爲當我們移除一個imageview時,iGone會增加1,所以如果我們移除3個imageviews,iGone會= 3,但玩遊戲的用戶會他們認爲他們從0開始計數到2,因爲他們已經完成計數到1,所以第四種情況是陳述6和10和15。我希望你能看到我試圖製作的圖案

我希望我能讓自己清楚,因爲許多其他人和我一樣都有這個問題。如果沒有隨意的電子郵件(PS我的p按鈕有點壞了,所以很抱歉丟失了任何應該在那裏的Ps'

如果你注意到我必須添加到它的改變,我希望它會幫助某人否則調用在不同的時間上課的時候誰不能讓每一個語句的case語句。

+0

謝謝大家的答案和幫助。 –

+3

即使你給自己的答案也沒有給出你的問題是什麼暗示。你應該假設讀者*知道switch語句是如何工作的。 – Holger

+0

好吧,我有點狡猾。 –

0

我不確定我是否完全理解你的問題,但看起來你的iGone變量是挑選一個點來開始執行代碼,並且你希望在該起點之後執行所有的情況。如果是這種情況,您可以簡單地刪除break語句。

+0

我希望新的編輯將幫助您瞭解 –

0

如果在案例中存在break語句,則switch語句不會出現。

從文檔http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

斷裂語句是必要的,因爲沒有它們,在開關塊語句落空:匹配殼體標籤之後在順序執行的所有陳述,而不管隨後的情況下標籤的表達的,直到遇到break語句。

所以,如果你想告吹,去除break語句

+0

對不起,如果我讓自己不清楚,但我不想通過休息聲明,我希望爲iGone每次新的價值imageview的可見性是不見了。我在上面添加了更多的代碼,這應該有助於完全清除事情的希望 –

0

在switch語句中,我們只能用數值,並作爲Java 7的字符串字面的,平等checking.Take看看在下面的代碼中試一試。

利用數值:

int number_to_compare = 3; 

switch(number_to_compare) { 
case 1: 
     System.out.println("value is equal to 1"); 
     break; 
case 2: 
     System.out.println("value is equal to 2"); 
     break; 
case 3: 
     System.out.println("value is equal to 3"); 
     break; 
} 

通過使用字符串常量:

String string_to_compare = "A"; 

switch(string_to_compare) { 
case "A": 
     System.out.println("value is equal to A"); 
     break; 
case "B": 
     System.out.println("value is equal to B"); 
     break; 
case "C": 
     System.out.println("value is equal to C"); 
     break; 
} 

如果您需要其他類型的checkings的,你必須通過做的if/else結構

+0

因此,如果我明白你的意思,我只能比較一個案例陳述? –

+0

簡而言之,我們只能比較文字值(數字或字符串)和開關語句。關於你的最後一個問題,只要被比較的值等於定義的一個案例的文字,實際上只有一個「開關案例」可以是真實的。 –

+0

嗯是的,但我打電話給它不同的時間,但我的主要問題是獲取的圖像數量相當於案件陳述中的正確案例數我發佈的代碼幫助它,並且是一個解決辦法,但如果我嘗試開始在完成案例1後,imageview消失在0它不工作,我不知道如何解決它 –

0

我覺得你這樣做是錯誤的,switch (iGone = 0),你應該switch (iGone)改變這一點。這將正常工作。

switch (iGone = 0)會總是返回1,true

+0

'switch(iGone = 0)將始終返回1,true。''isGone = 0'是一個變量賦值。 – nachokk

+0

抱歉的評論是不是在IE 10上工作,是的,我知道IE問題哈哈......但無論如何,我需要做的是每次ImageView的可見性設置爲消失後,iGone值增加1。我在 –

0

請看看ApiDemos。有什麼你在ApiDemos/Views/Drag and Drop中搜索

+0

以上添加了更多代碼請解釋一下,因爲當imageview消失時,iGone數字會隨機增加到一個隨機數。我需要它增加一個。我可以將它設置得很好?但由於某種原因,iGone始終等於一個隨機數 –

+0

我知道這是一項艱苦的工作,但是如何創建10個不同的xmls並動態更改其內容?似乎唯一的答案... 編輯:請添加此代碼,而不是吐司。 Log.e(TAG,「num1」);你在Logcat中得到什麼?隨機值? – user2606414

+0

當我回家時,我必須檢查它:(但即時猜測log.e(標記,iGone)是嗎? –