Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android应用程序中字符串到整数的转换_Java_Android_Android Edittext - Fatal编程技术网

Java Android应用程序中字符串到整数的转换

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.

我正在尝试使用Android中的EditText字段将字符串转换为整数,但每当尝试单击按钮时,我的应用程序就会崩溃。字符串部分可以工作,但问题仅在用户在名为Number的EditText字段中键入整数时出现

 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();
        }
    }
}