You are allowed to use the following methods from the Java API:
moveAllXsdown将一个char和一个二维char数组作为输入,但不返回任何内容:该方法应将每次出现的输入字符都“下移”到数组的下一行,并在同一列。如果无法向下移动字符(位于“底部”行或下面的行没有该列),则不会移动该字符。不要使用字符串来解决此问题。
char [] []面板= {{'a','b','c','X'},{'d','X','e','f','X'},{' X','X','i'},{'X','j','k','l'}}; HW2.moveAllXsDown('X',board)板{{a,b,c,f},{d,j,e,X,X},{X,X,i},{X,X,k,l }}
这是我的代码:
public static void moveAllXsDown(char a, char[][] arr){ for(int i = 0; i<arr.length-1; i++){ for(int j = 0; j<arr[i].length; j++){
if(arr[i+1].length>arr[i].length){ char [][] copyarr = new char [i][j]; arr [i][j] = copyarr [i][j] ; } else if(i+2==arr.length){ char [][] copyarr = new char [i][j]; arr [i][j] = copyarr [i][j] ; }
else{
if(arr[i][j] == a){
arr[i+1][j] = arr[i][j];
arr[i][j] = arr[i+1][j];
}
}
}
}
}
在前两个ifs中,除了获取arrayindexoutofboundexception,实际上什么都不做。你 正在创建一个新的字符数组,它是i j big,所以假设它是12 big。这是空的,你尝试在索引12上写入长度为12的数组,但索引只转到0 1。此外,在最后一个if部分中,你试图切换这两个字符,但你所做的只是使它们相同,例如你将a设置为char b,然后将b设置为char a,但是a设置为b,所以发生的一切就是将a设置为b。你需要创建一个帮助变量,将其称为c,然后将c设置为b,将b设置为a,然后将a设置为c。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。