gpt4 book ai didi

android - 数字格式异常 : why is 12 an invalid integer?

转载 作者:行者123 更新时间:2023-11-30 00:16:10 27 4
gpt4 key购买 nike

FATAL EXCEPTION: main
Process: ---, PID: 26657
java.lang.NumberFormatException: Invalid int: "12"

这是我遇到的异常,我不知道为什么,因为 12 似乎是一个正常的整数,我以前没有遇到过这个问题。它今天才开始,我什至没有接触相关 Activity 。我什至检查了引号是否是字符串的一部分,但它们不是。为什么这不起作用。这是上下文:

AsyncTask<Uri, Void, Void> asyncTask = new AsyncTask<Uri, Void, Void>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
loginButtonLayout.setVisibility(View.GONE);
bar.setVisibility(View.VISIBLE);
}

@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
ans = ans.replace(" ", "");
ans = ans.replace("\"", "");
Log.d("test2", ans);
if (!(ans.equals("false")) || !(ans.equals(""))) {
ans = ans.replace("\"", "");
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
SharedPreferences.Editor editor = (getBaseContext().getSharedPreferences("USER_DATA", Context.MODE_PRIVATE)).edit();
editor.putBoolean("login", true);
int fahrer = Integer.parseInt(ans);
editor.putInt("fahrerId", fahrer);
editor.clear().apply();
((Alpacar) getApplication()).setLoginState(true);
((Alpacar) getApplication()).setFahrerId(Integer.parseInt(ans));
Toast.makeText(getBaseContext(), "Login successful", Toast.LENGTH_LONG).show();
finish();
startActivity(intent);
} else {
Toast.makeText(getBaseContext(), "Login failed", Toast.LENGTH_LONG).show();
}
}

@Override
protected Void doInBackground(Uri... uris) {
URL url;
url = null;
try {
url = new URL(uri.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
}
if (url == null) {
Log.e("MainActivity.java", "Error creating URL");
return null;
}


// new try
HttpURLConnection urlConnection = null;
InputStream inputStream = null;
try {
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setReadTimeout(10000 /* milliseconds */);
urlConnection.setConnectTimeout(15000 /* milliseconds */);
urlConnection.setRequestMethod("GET");
urlConnection.connect();
if (urlConnection.getResponseCode() == 200) {
inputStream = urlConnection.getInputStream();
ans = readFromStream(inputStream);
Log.d("test", ans);
} else {
Log.e("QueryUtils", "Error response code: " + urlConnection.getResponseCode());
}

} catch (ProtocolException e) {
Log.e("QueryUtils", "Problem with the protocol", e);
} catch (IOException e) {
Log.e("QueryUtils", "Problem establishing the connection", e);

} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
}
return null;
}
};

问题出现在onPostExecute...

最佳答案

您的数据包含“12”之前的 UTF8 BOM 字节 ef bb bf 并且它们没有明显地打印在 logcat 中。 (您可以通过将异常消息粘贴到 hexdump 来进行检查。)这些字节搞砸了向整数的转换。

修复发出该值的代码,或让您的代码删除 BOM 字节。例如,参见 Byte order mark screws up file reading in Java

关于android - 数字格式异常 : why is 12 an invalid integer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250250/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com