我正在尝试编写一个程序,其中将文本转换为十六进制,然后转换为十进制,然后转换为(R,G,B)格式。但是,在尝试合并select id, name, department, total
from
(
SELECT e.id, e.name, e.department, t.total,
rank() over(partition by e.department order by t.total desc) as rnk
FROM (
SELECT id, SUM(hours) AS total
FROM hours
GROUP BY id
) t JOIN employee e ON e.id = t.id
) t
where rnk = 1
order by total desc
时,我会收到一个ClickableRectangle
异常,该异常会随着ArrayIndexOutOfBounds
的符号动态变化。
对我的问题/优化的任何想法?
rects
答案 0 :(得分:1)
为了将来参考,您应该确切地告诉我们哪一行抛出异常,并且您应该包括重复该问题所需的所有代码。如果文字太长而无法发布,请将其缩小到较小的MCVE。
但从我可以看到的情况来判断,问题似乎在这里:
String s = "test";
for (int i = 0; i < s.length(); i+=3) {
for (int j = i; j < i+3; j++) {
colors[j-i] = s.charAt(j);
}
//other stuff
}
只需在脑海中贯彻:
您还可以使用println()
语句来更好地了解正在发生的事情:
for (int i = 0; i < s.length(); i+=3) {
println("i: " + i);
for (int j = i; j < i+3; j++) {
println("j: " + j);
colors[j-i] = s.charAt(j);
}
//other stuff
}
打印出来:
i: 0
j: 0
j: 1
j: 2
0
i: 3
j: 3
j: 4
最后一部分是问题 - 我使用的字符串是&#34; test&#34;,因此它只有4个字符:charAt(0)
,charAt(1)
,{{1 }和charAt(2)
。所以当你尝试访问charAt(4)时,它会抛出一个StringIndexOutOfBoundsException!
我不确切地知道你在这里尝试做什么,但是你必须重新修改你的代码,以便它不会尝试访问超出界限的字符。字符串。
作为旁注:看起来您正试图一次性编写整个项目的代码。不要这样做。相反,以小增量开发 - 尝试在将它们组合到整个项目之前让自己更小的工作。你能写一个单独的草图,只是循环遍历一个字符串并打印出你想要提取的字符吗?然后,如果您遇到问题,可以使用较小的草图作为MCVE,这样我们就可以更轻松地为您提供帮助。