java.lang.NumberFormatException:无效的int:“”错误android

时间:2017-05-18 22:22:26

标签: java android

我正在创建一个应用程序,用户必须输入关于self.First name,second name,city and quantity他们希望订购的基本信息。如果他或她跳过一个字段toast将弹出消息,哪个字段是跳过。这没关系。这样可行,但是如果他跳过数量字段,我的手机上出现了错误,它会将用户重新发送给以前的活动。当我检查我的LogCat时,我看到错误消息

java.lang.NumberFormatException: Invalid int: “” error

现在我知道为什么会出现这样的消息。因为它有望找到整​​数,如果是的话。但实际上找到了String。但不知道如何解决它。最后的if / else状态是一个问题:

现在我到目前为止尝试了什么:

1) Tried to set primitive int as object Integer 
2)Tried to use kolicina==0; 
3)Tried to use kolicina.equals(null) / kolicina.equals(0); 
4)Tried to use .isEmty(); 

我的代码:

package com.dsk.android.decijisvetknjiga;

import android.content.Intent;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.view.View;

import android.widget.EditText;

import android.widget.Toast;



public class Narudzbina extends AppCompatActivity {

   String porukaGreska="";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.narudzbina);

    }
    public boolean praznoPolje(EditText et){
        return (et != null && (et.equals("") || et.equals(" ")));
    }

    public void kreiranjeNarudzbine(View v) {
        EditText editTextIme = (EditText) findViewById(R.id.ime);
        String imeNarucioca = editTextIme.getText().toString();
        praznoPolje(editTextIme);


        EditText editTextPrezime = (EditText) findViewById(R.id.prezime);
        String prezimeNarucioca = editTextPrezime.getText().toString();
        praznoPolje(editTextIme);

        EditText editTelefonNarucioca = (EditText) findViewById(R.id.telefon);
        String telefonNarucioca = editTelefonNarucioca.getText().toString();
        praznoPolje(editTelefonNarucioca);

        EditText editAdresaNarucioca = (EditText) findViewById(R.id.adresa);
        String adresaNarucioca = editAdresaNarucioca.getText().toString();
        praznoPolje(editAdresaNarucioca);

        EditText editGradNarucioca = (EditText) findViewById(R.id.grad);
        String gradNarucioca = editGradNarucioca.getText().toString();
        praznoPolje(editGradNarucioca);

        EditText editKolicina = (EditText) findViewById(R.id.kolicina);
        String narucenaKolicina = editKolicina.getText().toString();
        int kolicina = Integer.parseInt(narucenaKolicina);

        praznoPolje(editKolicina);
        int cenaNarudzbine = cena(kolicina);

        String poruka = sumiranjeNarudzbine(imeNarucioca, prezimeNarucioca, telefonNarucioca, adresaNarucioca, gradNarucioca, cenaNarudzbine);
        Intent smsIntent = new Intent(Intent.ACTION_VIEW);
        smsIntent.setType("vnd.android-dir/mms-sms");
        smsIntent.putExtra("address", "+1111111");
        smsIntent.putExtra("sms_body", poruka);

        if(imeNarucioca!=null && imeNarucioca.equals("")){
            Toast.makeText(Narudzbina.this, "Unesite ime", Toast.LENGTH_LONG).show();
        }
        else if(prezimeNarucioca!=null && prezimeNarucioca.equals("")){
            Toast.makeText(Narudzbina.this,"Unesite Prezime", Toast.LENGTH_LONG).show();

        }
        else if(telefonNarucioca!=null && telefonNarucioca.equals("")){
            Toast.makeText(Narudzbina.this,"Unesite kontakt telefon", Toast.LENGTH_LONG).show();
        }
        else if(adresaNarucioca!=null && adresaNarucioca.equals("")){
            Toast.makeText(Narudzbina.this,"Unesite adresu",Toast.LENGTH_LONG).show();
        }
        else if(gradNarucioca!=null && gradNarucioca.equals("")){
            Toast.makeText(Narudzbina.this, "Navedite grad", Toast.LENGTH_LONG).show();
        }
        else if(narucenaKolicina!=null && narucenaKolicina.equals("")){
            Toast.makeText(Narudzbina.this, "Navedite zeljenu kolicinu", Toast.LENGTH_LONG).show();
        }
        else{
            startActivity(smsIntent);
        }
    }

英语不是我的母语,所以请为拼写错误道歉或在此事上缺乏明确性,如果有必要,我很乐意解释。

4 个答案:

答案 0 :(得分:1)

您的问题就在这一行

int kolicina = Integer.parseInt(narucenaKolicina);

如果输入为空,它将尝试解析空字符串""。在尝试解析之前,需要将其包装在if语句中以检查narucenaKolicina是否为空或有效的int。

答案 1 :(得分:0)

提示你忽略这个例外:

EditText editKolicina = (EditText) findViewById(R.id.kolicina);
String narucenaKolicina = editKolicina.getText().toString();
if(!narucenaKolicina.isEmpty())
    int kolicina = Integer.parseInt(narucenaKolicina);
else
    Toast.makeText(Narudzbina.this, "Don't leave this field empty", Toast.LENGTH_LONG).show();

答案 2 :(得分:0)

异常是由parseInt()方法引起的,因此将kolicina更改为整数是没有用的

你应该尝试这样的事情:

if (narucenaKolicina != null && !narucenaKolicina.toString().trim().equals(""))

作为避免的条件""串。

答案 3 :(得分:0)

您需要检查字符串是否为空文本,而不仅是空值或0。 你必须做这样的事情

kolicina.equals("");