【发布时间】:2013-10-08 23:28:42
【问题描述】:
int [] f = {1,2,3,4,5,5,4,3,2,1};
int [] b = {6,1};
System.out.println(Arrays.toString(hide(f,b)));
public static int [] hide(int [] front, int [] back) {
int temp;
int extraTemp;
int nextTemp = 0;
int [] hiddenAt = new int[front.length];
//int [] shownAt = new int[front.length];
for(int x = 0; x < front.length; x++){
for(int y = 0; y <= back.length; y++){
temp = x;
if ((back.length > front.length) || (front[x] < 0 || back[y] < 0) || (front.length < 1 || back.length < 1)) {
System.exit(0);
}
if (y < back.length - 1){
nextTemp = Math.abs(back[y + 1] - front[x + 1]);
}
else {
nextTemp = 0;
}
if (front[x] > back[y]) {
System.out.println(temp);
}
else if (front[x] < back[y] && y >= back.length - 1 ) {
extraTemp = back[y] - front[x];
if (extraTemp > nextTemp){
extraTemp = nextTemp;
}
System.out.println(extraTemp);
}
else if (front[x] < back[y]) {
extraTemp = back[y] - front[x];
if (extraTemp > nextTemp){
extraTemp = nextTemp;
}
System.out.println(extraTemp);
}
}
}
return hiddenAt;
}
正在替换println 以查看正在生成的值。当我找出正确的值时,它们将是hiddenAt[z] = temp;。
我需要它来比较front[0] 和back[0] 然后front[1] 和back[1] 等等。之后,它将转移到一个:front[1] 和back[1] 然后front[2] 和back[2]直到front[] 结束。我想找出最小的差异在哪里。 (在这种情况下,[] 中的数字是 4 和 5。)
我收到两个错误,一个是第 39 行 if ((back.length > front.length) || (front[x]
是错误的,第 9 行也是错误的。 公开课 2 { 公共静态 void main(String[] args) {
int [] f = {1,2,3,4,5,5,4,3,2,1};
int [] b = {6,1};
System.out.println(Arrays.toString(hide(f,b)));
}
确切的错误是:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at hw2.hide(hw2.java:39)
at hw2.main(hw2.java:9)
【问题讨论】:
-
不太确定您的问题是什么!您的帖子中应该有一些带有问号的内容:P
-
你得到的输出是什么,你期望什么?
-
我收到一个错误,但我想要一个 {-4, -5} 的打印数组(对应于前面数组上的索引号的数字,其中两者之间的差异最小化)负号只是表示差异不是 0。
-
虽然
else if (front[x] < back[y] && y >= back.length - 1 )不应该抛出异常,但这有点奇怪:y如何变得比back.length-1更多?