Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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.lang.NumberFormatException:无法再次将“”解析为整数_Java_Android - Fatal编程技术网

java.lang.NumberFormatException:无法再次将“”解析为整数

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;

我将从用户那里得到两个数字,但这个来自EditText的数字必须转换为int。我认为它应该可以工作,但我仍然有在Android Studio中编译代码的问题

CatLog显示错误与以下内容一致:

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;返回预期的输出??留下你的踪迹。