2014-12-11 37 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); 
    } 
}