你好,我是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);
}
答案 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());
那也应该做的。