我有一个字符数组,我必须将这些字符映射为整数。它的工作原理如下。 - 数组中的最后一个字符必须为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)
答案 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();
}