2014-07-09 7 views
-2

Android에서 내 고객을위한 새로운 회계 프로그램을 작성하고 있습니다. 어떤 경우에는 EditText 텍스트를 정수로 변환해야하지만, 구문 분석을 할 때 "- 1 "java.lang.NumberFormatException가 발생했습니다.Integer.parseInt ("- 1") 오류가 발생했습니다.

내 문제를 이해하려면 다음을 시도하십시오. int i = Integer.parseInt ("- 1");

아무도 도와 줄 수 있습니까? 감사합니다.

이 코드입니다 :

int i = Integer.parseInt("-1"); 

이이 로그 추적입니다 :

07-09 03:33:36.932: E/AndroidRuntime(925): at dalvik.system.NativeStart.main(Native Method) 
07-09 03:36:09.252: E/AndroidRuntime(985): FATAL EXCEPTION: main 
07-09 03:36:09.252: E/AndroidRuntime(985): java.lang.NumberFormatException: Invalid int: "-1 
07-09 03:36:09.252: E/AndroidRuntime(985): " 
07-09 03:36:09.252: E/AndroidRuntime(985): at java.lang.Integer.invalidInt(Integer.java:138) 
07-09 03:36:09.252: E/AndroidRuntime(985): at java.lang.Integer.parse(Integer.java:375) 
07-09 03:36:09.252: E/AndroidRuntime(985): at java.lang.Integer.parseInt(Integer.java:366) 
07-09 03:36:09.252: E/AndroidRuntime(985): at java.lang.Integer.parseInt(Integer.java:332) 
07-09 03:36:09.252: E/AndroidRuntime(985): at forms.FYH_moshtari.UpdateRow(FYH_moshtari.java:149) 
07-09 03:36:09.252: E/AndroidRuntime(985): at yhesabyargui.YMaster_Body.OnAccept(YMaster_Body.java:61) 
07-09 03:36:09.252: E/AndroidRuntime(985): at yhesabyargui.YMaster_Body$10.onClick(YMaster_Body.java:321) 
07-09 03:36:09.252: E/AndroidRuntime(985): at yhesabyargui.CYH_Ctrl_ToolItem.onClick(CYH_Ctrl_ToolItem.java:111) 
07-09 03:36:09.252: E/AndroidRuntime(985): at android.view.View.performClick(View.java:4240) 
07-09 03:36:09.252: E/AndroidRuntime(985): at android.view.View$PerformClick.run(View.java:17721) 
07-09 03:36:09.252: E/AndroidRuntime(985): at android.os.Handler.handleCallback(Handler.java:730) 
07-09 03:36:09.252: E/AndroidRuntime(985): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-09 03:36:09.252: E/AndroidRuntime(985): at android.os.Looper.loop(Looper.java:137) 

이 완료 코드 :

public interface IYH_BodyControl { 
void showError(String Caption); 
void showHint(String Caption); 
void setNormal(); 
String getValue(); 
void setValue(String Value); 
void setEnable(Boolean Enable); 
void setLabel(String Label); 
void setVisible(Boolean Visible); 
LinearLayout getFrame(); 
int getID(); 
Boolean ValidateForInsert(); 
Boolean ValidateForUpdate(); 
Boolean ValidateForDelete(); 
void ClearContent(); 
void Focus(); 
} 
.... 
    protected Hashtable<Integer, IYH_BodyControl> ctrls = new Hashtable<Integer, IYH_BodyControl>(); 
.... 
protected void InsertRow() { 
    tblmoshtari().setAddress(ctrls.get(ctrladdr).getValue()); 
    tblmoshtari().setFname(ctrls.get(ctrlfname).getValue()); 
    tblmoshtari().setFamily(ctrls.get(ctrlfamily).getValue()); 
    tblmoshtari().setMobile(ctrls.get(ctrlmobile).getValue()); 
    tblmoshtari().setTel(ctrls.get(ctrltel).getValue()); 
    tblmoshtari().setMaxDebt(Integer.parseInt(ctrls.get(ctrlmaxdebt).getValue())); 
    tblmoshtari().Insert(); 
} 
.... 

은 분명히인가?

+5

당신은 첫 번째 문자는 보통 하이픈 것을 확신합니까? 엉덩이 대시 또는 화려한 하이픈이 아닌가? –

+3

또한 전체 스택 추적을 게시 할 수 있습니까? – BackSlash

+0

친애하는 David에게 아무것도, 단지 "-1"! –

답변

0

나는 로그 오류가 -one-

java.lang.NumberFormatException: Invalid int: "-1 
07-09 03:36:09.252: E/AndroidRuntime(985): " 

뒤에 공백이 있음을 보여주고 생각 나는

String num = "-1"; 
Integer.parseInt(num.trim()); 
+0

안녕하세요! 그건 "-1" –

0

가 확인하시기 바랍니다 할 것을 권장합니다

Invalid int: "-1 " 

처럼입니다 텍스트에 공백과 같은 보이지 않는 문자가 포함되어 있는지 확인합니다. 텍스트를 int로 변환하기 전에 텍스트를 트리밍하십시오. int i = Integer.parseInt ("- 1"); 어떤 문제없이 작동해야합니다.