Java Android应用程序中字符串到整数的转换
我正在尝试使用Android中的EditText字段将字符串转换为整数,但每当尝试单击按钮时,我的应用程序就会崩溃。字符串部分可以工作,但问题仅在用户在名为Number的EditText字段中键入整数时出现Java Android应用程序中字符串到整数的转换,java,android,android-edittext,Java,Android,Android Edittext,我正在尝试使用Android中的EditText字段将字符串转换为整数,但每当尝试单击按钮时,我的应用程序就会崩溃。字符串部分可以工作,但问题仅在用户在名为Number的EditText字段中键入整数时出现 package com.example.addingvalu; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.
package com.example.addingvalu;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
EditText Number,txtval;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void ViewaNumber(View V1)
{
txtval = (EditText) findViewById(R.id.Stringvalue);
Number = (EditText) findViewById(R.id.Numbers_text);
//String ab;
int ed;
ed = Integer.parseInt(Number.getText().toString());
if(txtval.length() != 0)
{
Toast.makeText(getBaseContext(), "String " + txtval.getText().toString() ,Toast.LENGTH_LONG).show();
}
else if(Number.length() !=0)
{
Toast.makeText(getBaseContext(),ed, Toast.LENGTH_LONG).show();
}
}
}
不使用大写字母启动方法和属性是一个非常好的实践。 还可以添加一个try/catch来打印出可能的错误,并提供一些关于如何修复它的线索。 尝试: 看一看
try{
int ed=Integer.valueOf(number.getText().toString());
}catch(NumberFormatException e){
e.printStackTrace();
}
我希望它能帮助你 我刚刚运行了这个,主要有两个问题
- 如果没有号码,您正在用空字符串调用
进来了parseInt()
- 您正在将
原语传递给int
Toast.makeText()
int
原语附加到字符串
即可:
Toast.makeText(getBaseContext(),"Number " + ed, Toast.LENGTH_LONG).show();
上述内容相当于:
"Number " + new Integer(ed).toString()
您也可以将吐司转换回String
:
Toast.makeText(getBaseContext(), String.valueOf(ed), Toast.LENGTH_LONG).show();
以下是修复这两个问题的工作和测试代码:
public class MainActivity extends Activity {
EditText number,txtval;
int ed;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void ViewaNumber(View V1)
{
txtval = (EditText) findViewById(R.id.Stringvalue);
number = (EditText) findViewById(R.id.Numbers_text);
//String ab;
if(txtval.length() != 0)
{
Toast.makeText(getBaseContext(), "String " + txtval.getText().toString() ,Toast.LENGTH_LONG).show();
}
else if(number.length() !=0)
{
//Make sure number is non-empty before calling parseInt()
ed = Integer.parseInt(number.getText().toString());
Toast.makeText(getBaseContext(),"Number " + ed, Toast.LENGTH_LONG).show();
}
}
}
你确定IDE没有把“Number”误认为类java.lang.Number吗?请你也发布日志。是的。。正如@TimKranen指出的那样,将
Number
重命名为类似Number1
的名称。试试看。。
public class MainActivity extends Activity {
EditText number,txtval;
int ed;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void ViewaNumber(View V1)
{
txtval = (EditText) findViewById(R.id.Stringvalue);
number = (EditText) findViewById(R.id.Numbers_text);
//String ab;
if(txtval.length() != 0)
{
Toast.makeText(getBaseContext(), "String " + txtval.getText().toString() ,Toast.LENGTH_LONG).show();
}
else if(number.length() !=0)
{
//Make sure number is non-empty before calling parseInt()
ed = Integer.parseInt(number.getText().toString());
Toast.makeText(getBaseContext(),"Number " + ed, Toast.LENGTH_LONG).show();
}
}
}