【问题标题】:Incrementing array values - Arduino递增数组值 - Arduino
【发布时间】:2011-05-08 20:06:18
【问题描述】:

我正在尝试增加一些数组值:

int counter[] = {0,0,0,0,0,0,0,0};

如果位置 0 的数字值达到 25,则位置 1 的值增加 1,位置 0 重置为 0。依此类推 - 当索引位置 2 达到 25 时,位置 3 增加 1,并将其自身的值重置为 0。

我正在做一些 base26 递增 - 为给定数量的字母生成所有字母组合。理想情况下,我希望它可以无限工作(理论上)——当最后一个值达到 25 时,会附加一个新的数组索引。

我正在从事与上一个问题相关的项目 - 可能会澄清我正在尝试做的事情:Every permutation of the alphabet up to 29 characters?

这是我目前掌握的代码:

// Set the variables.
String neologism;
int counter[] = {0,0,0,0,0,0,0,0};
String base26[] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};

void setup() {
    // Initialize serial communication:
    Serial.begin(9600);
}

void loop() {
    int i = 0;
    // Reset or increment the counter.
    if (counter[i] == 25) {
        counter[i] = 0;
        counter[i+1]++;
    }
    else {
        counter[i]++;
    }
    neologism = letters(counter[i]);
    Serial.print(neologism+'\n');
    delay(100);
    i++;
    if(i>7) {
        i=0;
    }
}

String letters(int counter) {
    String newword;
    for(int i=0; i <= 7; i++) {
        newword += base26[counter];
    }
    return newword;
}

【问题讨论】:

  • 抱歉,我没有完全理解您的问题。

标签: java math arduino


【解决方案1】:

【讨论】:

    【解决方案2】:

    使用比long 更长的数据类型没有多大意义,因为它需要几个世纪才能达到 Long.MAX_VALUE。

    您可以只增加一个 long 并根据需要将其转换为 base 26。

    将正长转换为base26的简单方法是

     public static String base26(long n) {
         if (n == 0) return "0";
         StringBuilder sb = new StringBuilder();
         while(n > 0) {
             sb.insert(0, (char) ('a' + n % 26));
             n /= 26;
         }
         return sb.toString();
     }
    

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 2013-10-30
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      相关资源
      最近更新 更多