android字符串到int不起作用

时间:2018-07-25 19:16:21

标签: java android

你好,我是android的新手,我正在尝试将字符串转换为Int,但无法正常工作。我正在使用Volley向服务器发送HTTP GET请求,并返回一个数字,但是android无法将其转换为Integer

我的代码

     public void getRemainingTime() {
        // Instantiate the RequestQueue.
        RequestQueue queue = Volley.newRequestQueue(this);
        String url ="http://myurl.com/xxx";
        // Request a string response from the provided URL.
        StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        int myNum = 0;
                        try {
                            myNum = Integer.parseInt(response);
                        } catch(NumberFormatException nfe) {
                            nfe.printStackTrace();
                        }
                        reverseTimer(myNum);
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                textTimer.setText("That didn't work!");
            }
        });
        // Add the request to the RequestQueue.
        queue.add(stringRequest);
    }

2 个答案:

答案 0 :(得分:5)

您从服务器响应中收到非数字字符。在转换之前,添加以下行:

response = response.replaceAll("[^0-9]","");

方法:

@Override
    public void onResponse(String response) {
        int myNum = 0;
        try {
            response = response.replaceAll("[^0-9]","");
            myNum = Integer.parseInt(response);
        } catch(NumberFormatException nfe) {
            nfe.printStackTrace();
        }
        reverseTimer(myNum);
    }

**您可以过滤多种方式。根据{{​​3}}

的建议,再给一个
response = response.replaceAll("\\D","");

答案 1 :(得分:0)

您的服务器响应:

1: 
2: 34404

所以要么删除服务器发送的换行符(对我来说毫无意义,为什么这样做)

或致电

 myNum = Integer.parseInt(response.trim());

那也应该做的。