1

2 次元配列から列を削除するクラスを作成しようとしていますが、理解できないエラーが発生し続けます。ここで非常に基本的なことを誤解していると思います。助けていただければ幸いです

public class CollumnSwitch
{
int[][] matrix;
int temp;

public static void coldel(int[][] args,int col)
{
    for(int i =0;i<args.length;i++)
    { 
        int[][] nargs = new int[args.length][args[i].length-1];
        for(int j =0;j<args[i].length;j++)
        {
            if(j!=col)
            {
                int temp = args[i][j];
            }
            nargs[i][j]= temp;
        }
    }
}

public void printArgs()
{
    for(int i =0;i<nargs.length;i++)
    {
        for(int j =0;j<nargs[i].length;j++) 
        {
            System.out.print(nargs[i][j]);
        }
        System.out.println();
    }

}


}
4

3 に答える 3

0

スコープ外の変数を使用しているため、問題が発生しています。Java では、変数は基本的に、変数が宣言された直近の中かっこのペア内にのみ存在します。たとえば、次のようになります。

public class Foo {
    int classVar;    // classVar is visible by all code within this class

    public void bar() {
        classVar = classVar + 1;    // you can read and modify (almost) all variables within your scope
        int methodVar = 0;    // methodVar is visible to all code within this method
        if(methodVar == classVar) {
            int ifVar = methodVar * classVar;    // ifVar is visible to code within this if statement - but not inside any else or else if blocks
        for(int i = 0; i < 100; i++) {
            int iterationVar = 0;    // iterationVar is created and set to 0 100 times during this loop.
                                     // i is only initialized once, but is not visible outside the for loop 
        }
        // at this point, methodVar and classVar are within scope,
        // but ifVar, i, and iterationVar are not
    }

    public void shoo() {
        classVar++;    // shoo can see classVar, but no variables that were declared in foo - methodVar, ifVar, iterationVar
    }

}

あなたが抱えている問題は、 for ループの反復ごとに新しい 2 次元配列を宣言し、それに 1 つの列を書き込んでから、それを捨てて新しい配列を作成し、プロセスを繰り返すためです。

于 2013-04-27T05:14:46.643 に答える