2016-04-07 17 views
-3

İşte kodum. Sloganlıktan ötürü özür dilerim ama esasen yapması gereken şey, anahtarlar tarafından kullanılan geriye doğru öğrenme algoritmasını simüle etmektir. HandleInput yöntemi, src ve dest MAC adreslerini ve bir port numarasını alır ve src MAC ve port #'u HashMaps olarak bir ArrayList'e ekler. Şu anda tüm yöntem işe yaramıyor çünkü HashMaps’lerin hiçbiri ArrayList’te bir nedenden ötürü kalmıyor. Herhangi bir yardım çok takdir edilir!ArrayList <HashMap> testlerde ve kullanıcı arayüzünde boş geri mi dönüyor?

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

Peki, yöntemin ilk talimatı switchTable'ı yeni bir boş alan ile değiştirir ... Ayrıca, ham türleri kullanmayın. Bir liste > olmalıdır. –

+1

Sınıfı ve beklenen çıkışı kullanarak başka kod ekleyebilir misiniz? –

cevap

1

Bir Switching nesnesi oluşturup yeni Switching nesne oluşturma ve tablo elde geçin sonra üzerine handleInput(...) arayıp edilir.

Tabloyu, önceden oluşturduğunuzdan almanız gerekir. senin handleInput yöntemi içinde

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

Ahh, Üzgünüm, çekim yapmakta zorlandım ve sınıf değişkenini boş olarak ilan ettim ve onu değiştirmeyi unuttum. Yine de aynı sorunu yaşıyorum. – trcoats

+0

Anladım. daha sonra sınıfın nasıl kullanıldığına dair daha fazla kod görmemiz gerekecek çünkü 'switchTable' içeriğinin saklanmamasının tek açık nedeni oldu. –

+0

@trcoats Cevabınızı, gerçek probleminize bir çözümle güncelledim. Bu hile yaptı –

0

yeni switchTable yaratıyor.
Yapmanız gereken şey,
anahtarınızı değiştirmenizdir switchTable = new ArrayList() to switchTable = getTable();

İlgili konular