1
int test = recDada.getKey();
LinkedList<Integer> stack = new LinkedList<Integer>();
while(test > 0) {

    stack.push(test % 10);
    test = test/10;             
}
for (int i = 0; i < stack.size(); i++) {
    while(stack.size() < 5) stack.addFirst(0);
    System.out.println(stack.get(i));

        }

これが問題です。マップキーを取得するintで構成されるこのコードがあり、それは「73」、「180」などの多くの数字です...これらの数字をこのようなものに変換する必要があります

私が必要とする出力:

0 0
0 0
0 1
7 8
3 0

私が得ている出力:

0 
0 
0
7
3
0 
0 
1
8
0 

ヒントを教えてください。とにかくありがとう、そして私の英語でごめんなさい:\

4

2 に答える 2

2

その場合、リンクされたリストを1つだけ使用することはできません

LinkedList<Integer> stacks[] = new LinkedList<Integer>[recDataSize];

入力方法

for(int i=0;i<recDataSize;i++){
          int test = recDada.getKey();
          stacks[i] = new LinkedList<Integer>();
         while(test > 0) {
               stacks[i].push(test % 10);
               test = test/10;             
         } 
}

したがってstack[0]となります7,3stack[1]になります1,8,0

印刷機能

//Add 0s to each stack
for (int i = 0; i <stacks.length; i++) {
     while(stacks[i].size() < 5) stacks[i].addFirst(0);
}

//Assuming all stacks are length 5 as they have been set in loop i
for (int j = 0; j < 5; j++) {
   for (int i = 0; i <stacks.length; i++) {
           System.out.print(stacks[i].get(j)+" ");
    }
   System.out.println();
}

スタックごとに入力が必要です。

もう 1 つのオプションは、-1 のような未使用の文字を使用して、1 つの長いリンク リスト内の数値を区切ることです。次に、そのリンクされたリストを 2 次元配列にマップして出力します。

そのリンクされたリストについて

LinkedList<integer> stack=new LinkedList<Integer>();

入力方法:

for(int i=0;i<recDataSize;i++){
      int test = recData.getKey();
      stacks[i] = new LinkedList<Integer>();
      while(test > 0) {
           stacks[i].push(test % 10);
           test = test/10;             
     } 
     while(stacks[i].size() < 5) stacks[i].addFirst(0);
     //Add 0 in the input now not in printing function
 }

したがって、スタックは0 0 0 7 3 0 0 1 8 0

マッピング機能

int map[][]=new int[recDataSize][5]; //This is the 2d array

for (int i = 0; i <recDataSize; i++) {
   for (int j = 0; j < 5; j++)  map[i][j]=stack.get((i*5)+j);
}

行列は 0 0 0 0 0 1 7 8 3 0 になります

(i、j)で印刷するだけです

于 2012-12-10T05:37:03.437 に答える
1

あなたは変えられる

 System.out.println(stack.get(i));

 System.out.print(stack.get(i));

 if (i % 2 == 0) 
     System.out.print(" "); 
 else
     System.out.println();
于 2012-12-10T05:11:47.703 に答える