java.lang.NumberFormatException:无法再次将“”解析为整数
我将从用户那里得到两个数字,但这个来自EditText的数字必须转换为int。我认为它应该可以工作,但我仍然有在Android Studio中编译代码的问题 CatLog显示错误与以下内容一致:java.lang.NumberFormatException:无法再次将“”解析为整数,java,android,Java,Android,我将从用户那里得到两个数字,但这个来自EditText的数字必须转换为int。我认为它应该可以工作,但我仍然有在Android Studio中编译代码的问题 CatLog显示错误与以下内容一致: int wiek = Integer.parseInt(wiekEditText.getText().toString()); 下面是我的完整Android代码: public class MyActivity extends ActionBarActivity { int Wynik;
int wiek = Integer.parseInt(wiekEditText.getText().toString());
下面是我的完整Android代码:
public class MyActivity extends ActionBarActivity {
int Wynik;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
int Tmax, RT;
EditText wiekEditText = (EditText) findViewById(R.id.inWiek);
EditText tspoczEditText = (EditText) findViewById(R.id.inTspocz);
int wiek = Integer.parseInt(wiekEditText.getText().toString());
int tspocz = Integer.parseInt(tspoczEditText.getText().toString());
Tmax = 220 - wiek;
RT = Tmax - tspocz;
Wynik = 70*RT/100 + tspocz;
final EditText tempWiekEdit = wiekEditText;
TabHost tabHost = (TabHost) findViewById(R.id.tabHost); //Do TabHost'a z layoutu
tabHost.setup();
TabHost.TabSpec tabSpec = tabHost.newTabSpec("Calc");
tabSpec.setContent(R.id.Calc);
tabSpec.setIndicator("Calc");
tabHost.addTab(tabSpec);
tabSpec = tabHost.newTabSpec("Hints");
tabSpec.setContent(R.id.Hints);
tabSpec.setIndicator("Hints");
tabHost.addTab(tabSpec);
final Button Btn = (Button) findViewById(R.id.Btn);
Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"blablabla"+ "Wynik",Toast.LENGTH_SHORT).show();
}
});
wiekEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Btn.setEnabled(!(tempWiekEdit.getText().toString().trim().isEmpty()));
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.my, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
您的输入可能在前导或尾随中包含空格,或者两者都包含空格。你可以试试看
int wiek = Integer.parseInt(wiekEditText.getText().toString().trim());
为什么?
例如:
输出:
Error java.lang.NumberFormatException: For input string: " 12 "
12
在这种情况下,如果
`wiekEditText.getText().toString()`
是空的
您应该像这样使用验证
int num = Integer.parseInt(wiekEditText.getText().toString()!=null
?wiekEditText.getText().toString().trim():"0");
您的输入可能在前导或尾随中包含空格,或者两者都包含空格。你可以试试看
int wiek = Integer.parseInt(wiekEditText.getText().toString().trim());
为什么?
例如:
输出:
Error java.lang.NumberFormatException: For input string: " 12 "
12
在这种情况下,如果
`wiekEditText.getText().toString()`
是空的
您应该像这样使用验证
int num = Integer.parseInt(wiekEditText.getText().toString()!=null
?wiekEditText.getText().toString().trim():"0");
在不查看布局XML的情况下,通过阅读您希望从用户处获取2个数字的问题描述,我只能假设活动启动时这2个EditText为空
@Override
protected void onCreate(Bundle savedInstanceState) {
...
EditText wiekEditText = (EditText) findViewById(R.id.inWiek);
EditText tspoczEditText = (EditText) findViewById(R.id.inTspocz);
// edit text are still empty...
int wiek = Integer.parseInt(wiekEditText.getText().toString()); // error occurs!
int tspocz = Integer.parseInt(tspoczEditText.getText().toString());
...
}
您可能希望在用户交互之后解析数字,可能是将代码放到OnClickListener或TextWatcher
此示例使用OnClickListener。计算将在用户单击按钮后完成
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
// add 'final'
final EditText wiekEditText = (EditText) findViewById(R.id.inWiek);
final EditText tspoczEditText = (EditText) findViewById(R.id.inTspocz);
// remove offending code
final EditText tempWiekEdit = wiekEditText;
TabHost tabHost = (TabHost) findViewById(R.id.tabHost);
...
final Button Btn = (Button) findViewById(R.id.Btn);
Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// move the parsing code here
int Tmax, RT;
int wiek = Integer.parseInt(wiekEditText.getText().toString());
int tspocz = Integer.parseInt(tspoczEditText.getText().toString());
Tmax = 220 - wiek;
RT = Tmax - tspocz;
Wynik = 70*RT/100 + tspocz;
Toast.makeText(getApplicationContext(),"blablabla"+ Wynik,Toast.LENGTH_SHORT).show();
}
});
...
}
-或
为了防止出现错误,第一次通过在布局XML上添加android:text=0来设置默认数字
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/inTspocz"
android:layout_marginTop="25dp"
android:hint="Your resting heart rate (Hint)"
android:text="0" />
在不查看布局XML的情况下,通过阅读您希望从用户处获取2个数字的问题描述,我只能假设活动启动时这2个EditText为空
@Override
protected void onCreate(Bundle savedInstanceState) {
...
EditText wiekEditText = (EditText) findViewById(R.id.inWiek);
EditText tspoczEditText = (EditText) findViewById(R.id.inTspocz);
// edit text are still empty...
int wiek = Integer.parseInt(wiekEditText.getText().toString()); // error occurs!
int tspocz = Integer.parseInt(tspoczEditText.getText().toString());
...
}
您可能希望在用户交互之后解析数字,可能是将代码放到OnClickListener或TextWatcher
此示例使用OnClickListener。计算将在用户单击按钮后完成
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
// add 'final'
final EditText wiekEditText = (EditText) findViewById(R.id.inWiek);
final EditText tspoczEditText = (EditText) findViewById(R.id.inTspocz);
// remove offending code
final EditText tempWiekEdit = wiekEditText;
TabHost tabHost = (TabHost) findViewById(R.id.tabHost);
...
final Button Btn = (Button) findViewById(R.id.Btn);
Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// move the parsing code here
int Tmax, RT;
int wiek = Integer.parseInt(wiekEditText.getText().toString());
int tspocz = Integer.parseInt(tspoczEditText.getText().toString());
Tmax = 220 - wiek;
RT = Tmax - tspocz;
Wynik = 70*RT/100 + tspocz;
Toast.makeText(getApplicationContext(),"blablabla"+ Wynik,Toast.LENGTH_SHORT).show();
}
});
...
}
-或
为了防止出现错误,第一次通过在布局XML上添加android:text=0来设置默认数字
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/inTspocz"
android:layout_marginTop="25dp"
android:hint="Your resting heart rate (Hint)"
android:text="0" />
当您尝试将字符串转换为数字时,可能会引发NuberFormatException,其中该数字可能是int、float或任何其他Java数字类型。添加以下语句检查输出内容
System.out.println(wiekEditText.getText().toString());
这可能有助于识别字符串返回的内容。wiekEditText.getText.toString中没有错误 当您尝试将字符串转换为数字时,可能会引发NuberFormatException,其中该数字可能是int、float或任何其他Java数字类型。添加以下语句检查输出内容
System.out.println(wiekEditText.getText().toString());
这可能有助于识别字符串返回的内容。wiekEditText.getText.toString中没有错误 确保您试图解析的数字不大于2147483647或-2147483647,这是最大整数值。 因此,在这种情况下,您可能需要使用
确保您尝试分析的数字不大于2147483647或-2147483647(最大整数值)。 因此,在这种情况下,您可能需要使用
请尝试wiekEditText.getText.toString.trim是否确定wiekEditText在其中输入了数字?请检查ifwiekEditText.getText.toString.trim.length>0{int-wiek=Integer.parseIntwiekEditText.getText.toString;}+SparkOn with.trim是相同的错误+Rod_Algonquin此应用程序不运行,因此没有人有机会放置与数字不同的内容;输入的数字可能是conatains空格请尝试打印该数字并检查ittry wiekEditText.getText.toString.trim您如何确定wiekEditText在其中输入了数字?请检查ifwiekEditText.getText.toString.trim.length>0{int wiek=Integer.parseIntwiekEditText.getText.toString;}+SparkOn with.trim是相同的错误+Rod_Algonquin此应用程序不运行,因此没有人有机会放置与数字不同的内容;可能是输入的数字。请在空白处尝试打印该数字并进行检查it@Quzziy您的输入内容是什么?它是空的吗?是的,当我把android:text=0放在布局XML上时,我认为它是空的。就像安德鲁·T.告诉我的。那么我在编译时就没有错误了。但我的输入框中有“0”,而不是来自的文本hint@Quzziy无法将null转换为int。应使用验证。检查我的更新答案。我正在为您更改代码,但我在编译过程中遇到了同样的问题,目前只有布局XML帮助中的android:text=0,但随后我从android中丢失了文本:hint@Quzziy您的输入内容是什么?它是空的吗?是的,当我把android:text=0放在布局XML上时,我认为它是空的。就像安德鲁·T.告诉我的。那么我在编译时就没有错误了。但我的输入框中有“0”,而不是来自的文本hint@Quzziy无法将null转换为int。应使用验证。检查我的更新答案。我正在为你更改代码,但我在编译过程中遇到了同样的问题,目前只有布局XML上的android:text=0有帮助,但后来我的文本从android:hintIn XML中丢失了,就是这样,所以我必须更改android:hint=something for android:text=something?你可以把两者都放进去,如果EditText为空,则为输入提示,文本为默认文本。确定,W
当我把android:text=0放在布局XML上时。它工作正常,但是使用android:text=布局XML上的一些文本。我在编译过程中出错如果你将数字以外的内容放入文本,应用程序将抛出NumberFormatException,因为它试图解析文本,而不是数字。请参考更新后的答案作为示例。在XML中是这样的,所以我必须更改android:hint=something for android:text=something?您可以同时放置这两个选项,如果EditText为空,则将hint用作输入提示,将text用作默认文本。好的,当我在布局XML上放置android:text=0时。它工作正常,但是使用android:text=布局XML上的一些文本。我在编译过程中出错如果你将数字以外的内容放入文本,应用程序将抛出NumberFormatException,因为它试图解析文本,而不是数字。请参阅更新后的答案以获取示例。我在Android Studio中有此代码,此错误发生在编译期间,而不是在输入框中执行某些数据期间。这意味着System.out.printlnwiekEditText.getText.toString;返回预期的输出??给出你的stacktrace。我在Android Studio中有这段代码,这个错误发生在编译期间,而不是在输入框中执行某些数据期间。这意味着System.out.printlnwiekEditText.getText.toString;返回预期的输出??留下你的踪迹。