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("");
}
}
}
Этот метод вставки принимает в качестве входного массива int[][]
, и я хочу, чтобы метод возвращал новый массив. В примере я получил массив.Как вернуть новый массив из массива в java
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)
Множественных маркеров на этой линии
- Возвращение типа для метода отсутствующего
- Синтаксическая ошибка, вставить "... VariableDeclaratorId", чтобы завершить
FormalParameterList
Я не знаю, как это исправить. Может кто-нибудь помочь?
'но это не work' Пожалуйста, будьте конкретны. Что именно не работает? Ошибки посткомпилирования, сообщение об исключении, трассировка стека, недопустимые или неожиданные результаты. –
Новые массивы создаются с использованием нового слова ** **. И материал возвращается из методов с помощью оператора ** return **. Итак, где именно ваша проблема? – GhostCat
Вы ищете «глубокую копию» вашего массива? Возможно, он ответил здесь: http://stackoverflow.com/questions/1564832/how-do-i-do-a-deep-copy-of-a-2d-array-in-java – vikingsteve