将EditText转换为int类型?(Android)

26

我想知道如何将EditText输入转换为整数,我让用户输入一个数字,然后将其除以8。

MainActivity.java:

@SuppressWarnings("unused")
public void calcSpeed(View view)
{       
    setContentView(R.layout.activity_speed);     
    
    final TextView mTextView = (TextView) findViewById(R.id.textView3);
    mTextView.setText("You should be getting: " +netSpedCalcd);
}

activity_main.xml:

    <EditText
    android:id="@+id/editText1" 
    android:inputType="number"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="62dp"
    android:ems="10" >

请查看此答案:https://dev59.com/ym445IYBdhLWcg3wWZAU - Daniel Smith
12个回答

54

你必须使用。

String value= et.getText().toString();
int finalValue=Integer.parseInt(value);

如果您只允许输入数字,则需要设置EditText属性。
android:inputType="number"

如果这有帮助,请接受,否则请留下您的评论。

EditText et = (EditText)findViewById(R.id.ettext); 就像这样。 - Harshid
EditText et = (EditText)findViewById(R.id.editText1); int nIntFromET = Integer.parseInt(text);它说“text无法解析为变量”。 - user2101454

10
使用 Integer.parseInt,并确保捕获它抛出的 NumberFormatException(如果输入不是整数)。

9
我现在非常困和疲劳,但这个方法可行吗?
EditText et = (EditText)findViewById(R.id.editText1);
String sTextFromET = et.getText().toString();
int nIntFromET = new Integer(sTextFromET).intValue();

或者

try
{
    int nIntFromET = Integer.parseInt(sTextFromET);
}
catch (NumberFormatException e)
{
    // handle the exception
}

第一个错误提示为“et无法解析”。 第二个错误提示为“Integer.parseInt无法解析为类型”。 - user2101454
我已经编辑了答案(等待同行审查),但第二个案例的问题是多余的“new”,只需删除即可。 - Jason Sankey
好的,对于sTextFromET,它说“sTextFromET无法解析为变量”,我该怎么办?(抱歉,我是Java和编程新手。) - user2101454
用 EditText 实例的 getText() 方法替换 sTextFromET,以获取你想要的值。 - Jason Sankey
我尝试了在不同stackoverflow问题中找到的以下内容,但我得到了一个NullPointerException。http://pastebin.com/LaXYb4LC - user2101454

4

试试这个:

EditText x = (EditText) findViewById(R.id.editText1);
int n = Integer.parseInt(x.getText().toString());

“保证不起作用”(Guaranteed to not work)。该链接是一个提示,指向http://developer.android.com/reference/java/lang/Object.html#toString()。 - Michael Yaworski

3
您可以使用try和catch块与parseInt一起使用。
try
{
    int myVal= Integer.parseInt(mTextView.getText().toString());
}
catch (NumberFormatException e)
{
    // handle the exception
    int myVal=0;
}

或者您可以创建自己的tryParse方法:

public Integer tryParse(Object obj) {
    Integer retVal;
    try {
        retVal = Integer.parseInt((String) obj);
    } catch (NumberFormatException nfe) {
        retVal = 0; // or null if that is your preference
    }
    return retVal;
}

并在您的代码中使用它,例如:

int myVal= tryParse(mTextView.getText().toString());

注意:以下代码没有try/catch将抛出异常

int myVal= new Integer(mTextView.getText().toString()).intValue();

或者

int myVal= Integer.decode(mTextView.getText().toString()).intValue();

2

尝试使用下面的代码将editText转换为整数。

int intVal = Integer.parseInt(mEtValue.getText().toString());

1
你可以像这样使用。
 EditText dollar=(EditText) findViewById(R.id.money);
 int rupees=Integer.parseInt( dollar.getText().toString());

1

首先,通过使用以下代码在Android Studio的资源中查找您的EditText:

EditText value = (EditText) findViewById(R.id.editText1);

然后将EditText值转换为string,再将该值解析为int

int number = Integer.parseInt(x.getText().toString());

这将起作用。


1

我自己也遇到了同样的问题。不确定你是否解决了这个问题,但是我所做的是:

EditText cypherInput;
cypherInput = (EditText)findViewById(R.id.input_cipherValue);
int cypher = Integer.parseInt(cypherInput.getText().toString());

第三行代码在使用.toString()之前没有使用.getText()导致应用程序崩溃。
仅供参考,以下是我的XML:
<EditText
    android:id="@+id/input_cipherValue"
    android:inputType="number"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

0
int total_Parson = Integer.parseInt(etRegularTickets.getText().toString());
int ticket_price=Integer.parseInt(TicketData.get(0).getTicket_price_regular());
total_ticket_amount = ticket_price * total_Parson;
etRegularPrice.setText(""+total_ticket_amount);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接