2015-06-21 29 views
-1

将用户输入的值传递给另一个类时出现问题。这是一个web服务,这就是为什么我不知道我将如何修复它,这是我第一次遇到wevservice。这是我获取用户输入的代码。将值传递给java中的另一个类

PlateNumberCheck.java

//PATH FOR CHECKING PLATE NUMBER 

@Path("platecheck") //for the url 

public class PlateNumberCheck { 
    public String anss; 
@GET 
//To get the full url : http://Ipaddress:portnumber/@path/@getPath 
@Path("/check") 
@Produces(MediaType.APPLICATION_JSON) 
//Produces is for the response of JSON. 

public String check(@QueryParam("taxi_plate_no") String taxi_plate_no){ 
    String sagot = ""; 
    anss = taxi_plate_no; 
    if(checkInput(taxi_plate_no)){ 
     display(); 
     sagot = JsonConstruction.JSONResponse("checked", true); 
    } else{ 
     sagot = JsonConstruction.JSONResponse("checked", false, "Not in the database"); 
    } 
    return sagot; 
} 

private boolean checkInput (String taxi_plate_no){ 
    System.out.println("Check Input"); 
    boolean output = false; 
    if(JsonConstruction.isNotNull(taxi_plate_no)){ 
     try{ 
      output = DatabaseConnection.checkPlate(taxi_plate_no); 
     } catch (Exception e){ 
      output = false; 
     } 
    } else{ 
     output = false; 
    } 

    return output; 
} 
public void display(){ 
    System.out.println(anss); 

} 
} 

我觉得这个类的作品。因为你可以看到我在成功之前首先使用该方法,并且该方法包含在控制台中输出输入的system.out.print。这是我第二堂课,我想把这个输入传递给这个班级。

DisplayTaxiDetails.java

@Path("/displays") 
public class DisplayTaxiDetails { 
    String plates; 
    @GET 
    @Path("taxidetails") 
    @Produces(MediaType.APPLICATION_JSON) 

    public String taxidetails(){ 
     String taxidetails = null; 
     ArrayList<Objects> taxiDetailsList = new ArrayList<Objects>(); 

     try{ 
      PlateNumberCheck plate = new PlateNumberCheck(); 
      plates = plate.anss; 
      taxiDetailsList = new ArrayConnection().getTaxiDetails(plates); 
      System.out.println(plates); 
      Gson gson = new Gson(); 
      taxidetails = gson.toJson(taxiDetailsList); 
     } catch (Exception e){ 
      e.printStackTrace(); 
     } 
     return taxidetails; 

     } 

    } 

正如你可以看到我所说的第一类和访问ANSS这是存储已输入该类的字符串。但是当我访问它并尝试传递值时,它不起作用。我再次使用system.out.print来查看它是否打印数据,但它总是显示为空,我认为来自第一类的值不会传递给此第二类的变量。

回答

0

您需要了解java运行时环境的基础知识。这将解释你的对象如何彼此绑定并可以相互交互。在你的情况下,每当你在第二类中的方法被调用时,你正在创建一个PlateNumberCheck的新实例。

PlateNumberCheck plate = new PlateNumberCheck();

对于该实例,您不必在anss现场设置的任何值(顺便说一句,这也是不正确的方法,但这是以后),因为该实例已刚刚创建的。

+0

什么是将用户输入的值传递给另一个类的正确方法? – Jerex

+0

阅读(谷歌它)有关面向对象编程的基本原理。其中之一是封装。我并不是说这不起作用,但有更好的方法来设计这些要求。但是,正如我所说的,首先尝试理解为什么你总是在这个领域变得空洞,然后设计更好。 –

+0

那我该怎么办? – Jerex