如何将此字符数组映射到整数?

时间:2016-03-25 13:49:02

标签: java arrays

我有一个字符数组,我必须将这些字符映射为整数。它的工作原理如下。 - 数组中的最后一个字符必须为0,然后是下一个不同的字符= 1,依此类推。

我已经有了数组中的字符,我似乎无法正确映射它们

这就是我试过的

public void generate(String first, String second) {
    letters = new char[(first+second).length()];

    for(int i = 0; i < letters.length; i ++) { //Getting the string as characters into array
        letters = (first+second).toCharArray();
    }

    for(int j = 0; j < letters.length; j++) {
        for(int m = letters.length; m > 0; m--) {
            letters[m] = (char) j;
        }
    }

}

给了我这个错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at PuzzleGenerator.generate(PuzzleGenerator.java:21)
at test.main(test.java:7)

2 个答案:

答案 0 :(得分:0)

    for(int m = letters.length; m > 0; m--) {
        letters[m] = (char) j;
    }

这个循环从letters.length开始,这给你一个例外。 你应该这样写:

    for(int m = letters.length; m-- > 0; ) {
        letters[m] = (char) j;
    }

我真的不明白你要做什么,但第一个循环应该只用

替换
letters = (first+second).toCharArray();

做一次就足够了。

答案 1 :(得分:0)

你回答的问题尚不清楚,但也许这就是你想要的:

  public static int[] generate(String first, String second) {
    return (first + second)
      .chars()
      .flatMap(i -> IntStream.range(0, i)
                      .boxed()
                      .sorted(Collections.reverseOrder())
                      .mapToInt(Integer::valueOf))
      .toArray();
  }