2014-01-15 14 views
-3
int crack1 = rand.nextInt(9); 
    int crack2 = rand.nextInt(9); 
    int crack3 = rand.nextInt(9); 
    int crack4 = rand.nextInt(9); 
    int crack5 = rand.nextInt(9); 
    int crack6 = rand.nextInt(9); 
    int crack7 = rand.nextInt(9); 
    int crack8 = rand.nextInt(9); 

我有這段代碼從0-9生成8個隨機數。我有8個這些開關語句只有「crack1」變量從1-8變化。此代碼使用Java機器人按照它們生成的順序打印出隨機數。出於某種原因,無論何時生成2,它都會跟隨一個額外的3,並且無論何時產生5,都會跟隨一個額外的6.例如,如果生成數字12345678,機器人會輸入1233456678.問題:開關正在執行一些連續的情況

 switch (crack1) { 

    case 0: 
     r.delay(5000); 
     r.keyPress(48); 
     r.keyRelease(48); 
     break; 
    case 1: 
     r.delay(5000); 
     r.keyPress(49); 
     r.keyRelease(49); 
     break; 
    case 2: 
     r.delay(5000); 
     r.keyPress(50); 
     r.keyRelease(50); 
    case 3: 
     r.delay(5000); 
     r.keyPress(51); 
     r.keyRelease(51); 
     break; 
    case 4: 
     r.delay(5000); 
     r.keyPress(52); 
     r.keyRelease(52); 
     break; 
    case 5: 
     r.delay(5000); 
     r.keyPress(53); 
     r.keyRelease(53); 
    case 6: 
     r.delay(5000); 
     r.keyPress(54); 
     r.keyRelease(54); 
     break; 
    case 7: 
     r.delay(5000); 
     r.keyPress(55); 
     r.keyRelease(55); 
     break; 
    case 8: 
     r.delay(5000); 
     r.keyPress(56); 
     r.keyRelease(56); 
     break; 
    case 9: 
     r.delay(5000); 
     r.keyPress(57); 
     r.keyRelease(57); 
     break; 

    } 
+0

代替開關,只需用'48 + crack1' – vandale

+0

我不太明白你的意思?你能否詳細解釋一下? –

+0

情感是正確的,你在案件2和5中失蹤'break'。 – NKN

回答

3

你忘了把break;switch案件2和5,因此代碼不斷去和相應的執行3和6的情況下。

1

對於每當產生二是跟隨着一個額外 3某種原因,每當產生一個5其後是一個額外的6

您沒有break語句對於殼體2和殼體5,因此下面的情況語句將被執行:

case 2: 
     r.delay(5000); 
     r.keyPress(50); 
     r.keyRelease(50); 
     // missing break statement 

case 5: 
    r.delay(5000); 
    r.keyPress(53); 
    r.keyRelease(53); 
    // missing break here 
+0

哇,不能相信我錯過了。謝謝:) –

2

取而代之的是巨大的開關(正如你可以看到的是容易出錯)使用以下命令:

int key= 48+crack1; 
r.delay(5000); 
r.keyPress(key); 
r.keyRelease(key); 

將採取的0-9的情況下照顧。

+0

哇,使這更容易,非常感謝幫助! –