package test;
import java.util.*;
public class test {
public int[][] left (int matrix[][]) {
for(int i=0; i<=3;i++)
for (int j=2;j>=0;j--)
{
if (matrix[i][j] ==0)
{
for (int k=j+1; k<=3;k++)
{
matrix[i][k-1]=matrix[i][k]; // chuyen
}
for (int l=3; l>=0;l--)
{
if (matrix[i][l] == 0) continue;
else matrix[i][l] =0;
if (matrix[i][l] != 0) break;
}
}
}
return matrix;
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int i,j;
int[][] a = new int[3][3];
for (i=0;i<=2;i++)
for (j=0;j<=2;j++)
{
System.out.print("input a" +i + j);
a[i][j]= in.nextInt();
}
left(a);
for (i=0;i<=2;i++)
{
for (j=0;j<=2;j++)
{
System.out.print(a[i][j]);
}
System.out.println("");
}
}
}
此方法insert作为输入int[][]
数组,我想要一个方法来返回一个新数组。例如,我有一个数组。
a[][]=
{
0 0 2 0
0 2 0 0
0 2 2 2
2 0 0 0
}
我尝试使用这样的方法:left(a);
返回新数组但是它不起作用
我希望返回的新数组如下:
{
2 0 0 0
2 0 0 0
2 2 2 0
2 0 0 0
}
(左边的增量元素,0除外)
此行的多个标记
- 缺少方法的返回类型
- 语法错误,插入&#34; ... VariableDeclaratorId&#34;完成
FormalParameterList
我不知道如何解决这个问题。有人可以帮忙吗?
答案 0 :(得分:1)
我真的很抱歉,但你的代码有很多问题。
left()
方法是非静态的,您尝试通过静态方法访问它。它应该给你编译错误。int[][] a = new int[3][3]
left()
方法循环for(int i=0; i<=3;i++)
这应该抛出arrayIndexOutBoundException
。我可以通过将left()
方法声明为静态来查看您的评论。请问您是否可以发布工作代码?
我建议您首先解决上面提到的问题,以便能够使您的代码至少处于工作状态。
答案 1 :(得分:0)
TODO:
1。请注意 @Shirish 所说的所有问题
2。不要使用Primitive数组,因为Collections
适用于Class
类型。例如:Integer[][] a=new Integer[3][3];
3. 输入后运行以下代码并显示代码。(不要调用left(a)
方法)
左侧的增量元素,除了0
我在这里应用的是 - 从数组中取出每一行并按降序排序。
for (Integer[] item : a) {
Arrays.sort(item,Collections.reverseOrder());
}
希望它能解决问题。
最终代码:
public class MyArray {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int i, j;
Integer[][] a = new Integer[3][3];
for (i = 0; i <= 2; i++)
for (j = 0; j <= 2; j++) {
System.out.print("input a" + i + j);
a[i][j] = in.nextInt();
}
// left(a);
for (Integer[] item : a) {
Arrays.sort(item, Collections.reverseOrder());
}
for (i = 0; i <= 2; i++) {
for (j = 0; j <= 2; j++) {
System.out.print(a[i][j]);
}
System.out.println("");
}
}
}