2017-05-18 61 views
-1

我正在創建一個應用程序,用戶必須輸入有關self.First名稱,第二個名稱,城市和數量的基本信息,他或她希望訂購。如果他或她跳過一個字段的吐司會彈出消息字段被跳過。這是ok.That的作品,但如果他跳過數量字段我我的手機上有錯誤,並將其發送回用戶先前activity.When我檢查我的logcat我看到錯誤消息java.lang.NumberFormatException:無效的int:「」錯誤android

java.lang.NumberFormatException: Invalid int: 「」 error 

現在我知道這是爲什麼消息出現。因爲它預計會發現整數,如果是statment。但實際上找到了String。但不知道如何解決最後後援的if/else statemen是一個問題:

現在我試過到目前爲止:

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

英語不是我的母語對拼寫錯誤或對此問題缺乏清晰度表示歉意,如果有必要,我很樂意解釋它。

+0

'「」'< - 這是narucenaKolicina的'實際值'?如果是這樣,那麼這是你的問題。這些看起來像一些UTF字符,當然沒有數字。 – Turing85

回答

1

你的問題是在這條線

int kolicina = Integer.parseInt(narucenaKolicina); 

如果輸入是空的,它會嘗試解析一個空字符串「」。您需要將其包裝在if語句中,以在您嘗試解析它之前檢查narucenaKolicina是否爲空或有效的int。

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

唯一的例外是由parseInt()法造成這麼kolicina改爲整數是沒有用的

你應該嘗試這樣的事:

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

作爲條件,以避免「」字符串。

+0

不,它表示操作數'!='不能應用於'int','null'。也toString()是紅色的,並顯示錯誤無法解析toString()Metod – gojic

+0

我不好,我寫錯了變量。我會Edir –

+0

問題是在NarucenaKolicina的價值,所以你應該檢查.. –

0

你需要檢查,如果你的字符串具有空文本,不僅是空值或0 你必須做這樣的事情

kolicina.equals(""); 
相關問題