问题:开关正在执行一些连续的情况

时间:2014-01-15 01:10:52

标签: java random awtrobot

    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个这样的switch语句,只有“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;

    }

3 个答案:

答案 0 :(得分:3)

您忘记在break;中为案例2和5添加switch,因此代码会继续执行,并相应地执行3和6案例。

答案 1 :(得分:2)

使用以下内容代替巨大的交换机(您可以看到容易出错):

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

它将处理0-9的情况。

答案 2 :(得分:1)

  

出于某种原因,无论何时生成2,都会有一个额外的   3,每当产生5时,接着是额外的6

对于案例2和案例5,您没有break语句,因此将执行以下case语句:

  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