2016-04-07 6 views
-3

ここに私のコードです。私は汚れていることをお詫びしますが、基本的にスイッチが使用する後方学習アルゴリズムをシミュレートすることです。 handleInputメソッドは、srcとdestのMACアドレスとポート番号を取り込み、srcのMACとポート番号をHashMapsとしてArrayListに追加します。何らかの理由でHashMapがArrayListに残っていないため、メソッド全体が役に立たなくなります。どんな助けでも大歓迎です!ArrayList <HashMap>がテストとUIで空に戻りますか?

public class Switching { 
    ArrayList<HashMap> switchTable = new ArrayList<HashMap>(); 

    public String handleInput(String srcMacAddress, int portNumber, String destMacAddress){ 
     String output = ""; 
     HashMap tableEntry = new HashMap(); 
     tableEntry.put(srcMacAddress, portNumber); 
     for (HashMap hm : switchTable) { 
      if (hm.containsKey(destMacAddress)) { 
       output += hm.get(destMacAddress).toString(); 
      } else { 
       output += "Ports flooded"; 
      } 
     } 
     switchTable.add(tableEntry); 
     return output; 
    } 

    public ArrayList<HashMap> getTable(){ 
     return switchTable; 
    } 



public class SwitchingTests { 
    @Test 
    public void testSwitching(){ 
     new Switching().handleInput("123456", 12, "abcdef"); 
     ArrayList<HashMap> switchingTable = new Switching().getTable(); 
     Assert.assertEquals(switchingTable.toString(), "[{123456=12}]"); 
    } 
} 
+0

このメソッドの最初の命令は、switchTableを新しい空のものに置き換えます。また、生の型は使用しないでください。 'List >'でなければなりません。 –

+1

クラスと期待される出力を使用して、これ以上コードを追加できますか? –

答えて

1

あなたはSwitchingオブジェクトを作成し、新しいSwitchingオブジェクトを作成し、そのテーブルを取得するために進み、それにhandleInput(...)を呼び出しています。

既に作成したテーブルからテーブルを取得する必要があります。

public class SwitchingTests { 
    @Test 
    public void testSwitching(){ 
     Switching switching = new Switching(); 
     switching.handleInput("123456", 12, "abcdef"); 
     ArrayList<HashMap> switchingTable = switching.getTable(); 
     Assert.assertEquals(switchingTable.toString(), "[{123456=12}]"); 
    } 
} 
+0

ああ、申し訳ありませんが、撮影に問題があり、クラス変数をnullと宣言し、変更を忘れました。私はまだ同じ問題を抱えています。 – trcoats

+0

私は参照してください。 'switchTable'がその内容を保持しない唯一の明白な理由であったので、クラスをどのように使用しているかについてもっとコードを見る必要があります。 –

+0

@trcoats私はあなたの本当の問題に対する解決策で答えを更新しました。 –

0

あなたは新しいswitchTableを作成しています。
あなたがしなければならないことはあなたの行を変更することです。
switchTable = new ArrayList()to switchTable = getTable();

関連する問題