2014-12-11 68 views
0

在我的程序中,當我在下面的一段代碼中調用updateNextPortNum方法時,爲什麼這裏有一個錯誤,說:「此行多個標記 - 路由器無法解析 - newRouterIp無法解析爲變量」接口錯誤

else if (operType.equals("3")){ 
      System.out.println("Inpur router number: "); 
      String routerNum = br.readLine(); 

      error ==> rm.updateNextPortNum(routerNum, newRouterIp, newPortNum); 
     } 

類RouterManage被調用的函數:

class RouterManage { 
    private ArrayList al = null; 

    public RouterManage() { 
     al = new ArrayList(); 
    } 

    // add Router 
    public void addRouter(Router router) { 
     al.add(router); 
    } 

    // show information of Router 
    public void showInfo(String routerNum) { 
     for (int i = 0; i < al.size(); i++) { 
      // take Router object out 
      Router router = (Router) al.get(i); 

      if (router.getRouterNum().equals(routerNum)) { 
       System.out.println("Find this router, info of its: "); 
       System.out.println("Router num: " + routerNum); 
       System.out.println("Router IP: " + router.getRouterIp()); 
       System.out.println("Next Router PortNum: " + router.getNextPortNum()); 
      } 
     } 
    } 

    // show information of Router 
    public void showAllInfo(String routerNum, String routerIp, int nextPortNum) { 
     for (int i = 0; i < al.size(); i++) { 

      Router router = (Router) al.get(i); 

      System.out.println("All router information: "); 
      System.out.println("Router num: " + routerNum); 
      System.out.println("Router IP: " + router.getRouterIp()); 
      System.out.println("Next Router PortNum: " + router.getNextPortNum()); 
     } 
    } 

    // change next port num 
    public void updateNextPortNum(String routerNum, String newRouterIp, int newPortNum) { 
     for (int i = 0; i < al.size(); i++) { 
      Router router = (Router) al.get(i); 

      if (router.getRouterNum().equals(routerNum)) { 
       // change router's ip 
       router.setRouterIp(newRouterIp); 
       // change router port number 
       router.setNextPortNum(newPortNum); 
      } 
     } 
    } 
} 

我只是嘗試寫一個簡單的接口來實現的選擇功能。

謝謝,夥計們。

+0

因爲'router'和'newRouterIp'不在範圍內那裏。這些變量在哪裏/如何申報? – azurefrog 2014-12-11 05:13:07

+0

也許你的路由器和newRouterIp不存在。嘗試首先聲明它。 '你的範圍內的字符串路由器;&'字符串newRouterIp;'。或將您的代碼發佈到您聲明的位置。 – Secondo 2014-12-11 05:19:07

+0

@azurefrog我注意到,更新上面的程序,問題仍然沒有解決。 – 2014-12-11 05:20:26

回答

0

您必須創建一個字符串並傳遞給方法updateNextPortNum。即使參數和參數在同一個文件中具有相同的名稱,範圍規則意味着它們是不同的變量。在有條件的校驗塊的範圍,創建一個字符串或分配/在下面的代碼做

String newRouterId = "192.168.1.1"; 
0

System.out.println("Inpur router number: "); 
String routerNum = br.readLine(); 
System.out.println("Input new router IP: "); 
String newRouterIp = br.readLine(); 
System.out.println("Input new port number: "); 
int newPortNum = Integer.parseInt(br.readLine()); 

rm.updateNextPortNum(routerNum, newRouterIp, newPortNum); 

的「newRouterIp和newPortNum」需要被在BufferedReader中讀取。

一個愚蠢的錯誤是什麼:d

+0

看到告訴你:) XD你需要先使用它創建一個newRouterIp變量。 – Secondo 2014-12-12 01:22:13

+0

@Secondo謝謝你:) – 2014-12-12 02:06:42

0

它在ArrayList中,但是,考慮到有關安全,我重新編寫這個哈希表中:

//delete router 
public void delRouter(String routerNum){  

    Router router = (Router)ht.get(routerNum); 

    if(router.getRouterNum().equals(routerNum)){ 
     // delete object 
     //al.remove(i); 
     ht.remove(routerNum); 
    } 
}