3

配列要素を単純に移動するプログラム。

2 つの変数:userInputVariableblankSpaceVariable.

table という名前の 2D 配列があります。として定義table[userInputVariable + 1][6]

この配列を表形式で出力しています。左端の列には、プログラムの最初にユーザーが入力した番号が付けられています。

次に、配列内のどこに空白を入力したいかをユーザーに尋ねます。この空白スペースは、配列内の他のすべての情報に対する仕切りのように機能します。

たとえば、ユーザーが の最初に 10 を入力しuserInputVariable、次に空白に 5 を入力するとします。印刷されると、数字は次のようになります。

1, 2, 3, 4, --, 5, 6, 7, 8, 9, 10.

私の計画は、for ループを作成し、配列内のすべての数値を空白変数から始まる位置に戻そうとすることでした。

私は現在持っていますが、動作しません:

for (int i = blankSpaceVariable; i < table.length - 1; i++) 
{
table[i] = table[i + 1];
}
table[blankSpaceVariable] = "--";

私の現在のコードでは、数字は次のようになります。

1、2、3、4、6、7、8、9、10

これもいくつかの異なる方法で完了しようとしましたが、2D 配列内の他の情報は数値と共に移動しませんでした。したがって、このアプローチにより、2D 配列内のすべての情報を下に移動し、空白のセクションに道を譲ることができると考えました。

すべてのヘルプは大歓迎です!

4

2 に答える 2

0

数値を次の位置に移動する場合は、配列の最後から開始する必要があります。

for (int i = table.length - 1; i > blankPosition; i--) {
    table[i] = table[i - 1];
}
table[blankPosition] = 99;

あなたの例から、から1を引く必要があるかもしれません(あなたが5であるblankPositionと言うなら、は持っています)、しかしこれはおそらくループに入るに行うのが良いでしょう(それは実際の実装のためにデータをフォーマットする問題です) 。blankPositiontable[4]--

そして、おそらく名前の変更tableも良い考えでしょう。


本当に厄介な実装例:

public class Arrays {

        public static void main(String[] args) {
                Integer blankPosition = Integer.parseInt(args[0]);
                // Using 99 instead of "--" because of array type
                int[] table = new int[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 99};
                printEm(table);
                for (int i = table.length - 1; i > blankPosition; i--) {
                        table[i] = table[i - 1];
                }
                table[blankPosition] = 99;
                printEm(table);
        }

        public static void printEm(int[] array) {
                for(int i = 0; i < array.length; i++) {
                        System.out.print(array[i] + " ");
                }
                System.out.println();
        }
}

それを実行してみましょう:

$ java Arrays 5
1 2 3 4 5 6 7 8 9 10 99 
1 2 3 4 5 99 6 7 8 9 10
于 2012-11-05T04:10:08.433 に答える
0

うまくいきました!

2D 配列を使用しているため、別の for ループを実行して 2 番目の次元を実行する必要がありました。これが最終的なコードです。

@desert69に感謝します

for (int i = table.length - 1; i > startBlank; i--) 
{
    for (int j = 0; j < table[i].length; j++) 
    {
        table[i][j] = table[i - 1][j];
    }
}
table[startBlank][0] =  "--";
于 2012-11-05T04:57:49.853 に答える