2017-09-21 13 views
0

저는 프로그래밍 할 때 정말 새로운 것 같습니다. 나는 간단한 평균 계산기를 실행하고 강제로 닫기를 얻으려고 노력하고 있는데, 이것은 logcat이 보여주는 것입니다. 나는 안드로이드 스튜디오 버전을 실행하고 2.3.3평균 계산기 치명적인 예외

FATAL EXCEPTION: main 
Process: com.vu.gradingapp, PID: 6312 
java.lang.NumberFormatException: For input string: "" 
    at java.lang.Integer.parseInt(Integer.java:620) 
    at java.lang.Integer.valueOf(Integer.java:794) 
    at com.vu.gradingapp.AverageActivity$1.onClick(AverageActivity.java:37) 
    at android.view.View.performClick(View.java:6219) 
    at android.view.View$PerformClick.run(View.java:24482) 
    at android.os.Handler.handleCallback(Handler.java:769) 
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6540) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

어떻게 내가 잘못하고있는 중이 야

public class AverageActivity extends AppCompatActivity { 
EditText editmanner, editinstances, editshortstance, editstrikes, editboxingskills, editknocks, editkicks, editResults; 
Button btnResults; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.average_page); 
    editmanner =(EditText)findViewById(R.id.editText8); 
    editinstances = (EditText)findViewById(R.id.editText9); 
    editshortstance = (EditText)findViewById(R.id.editText10); 
    editstrikes = (EditText)findViewById(R.id.editText11); 
    editboxingskills = (EditText)findViewById(R.id.editText12); 
    editknocks = (EditText)findViewById(R.id.editText13); 
    editkicks = (EditText)findViewById(R.id.editText14); 
    editResults = (EditText)findViewById(R.id.editText15); 
    btnResults = (Button) findViewById(R.id.button10); 
    btnResults.setOnClickListener(new View.OnClickListener(){ 
@Override 
public void onClick(View v) { 
    int first, second, third, fourth, fifth, sixth, seventh, results; 
    first=Integer.valueOf(editmanner.getText().toString()); 
    second=Integer.valueOf(editinstances.getText().toString()); 
    third=Integer.valueOf(editshortstance.getText().toString()); 
    fourth=Integer.valueOf(editstrikes.getText().toString()); 
    fifth=Integer.valueOf(editboxingskills.getText().toString()); 
    sixth=Integer.valueOf(editknocks.getText().toString()); 
    seventh=Integer.valueOf(editkicks.getText().toString()); 
    results=(first+second+third+fourth+fifth+sixth+seventh)/7; 
    editResults.setText(String.valueOf(results)); 
} 
    }); 


} 
public void knowtheresults (View view) { 
    String button_text; 
    button_text = ((Button) view).getText().toString(); 
    if (button_text.equals("Summary")) { 
     Intent intent = new Intent(this, ResultActivity.class); 
     startActivity(intent); 
    } else if (button_text.equals("Back")) { 
     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 

를 따를 때 내가 사용하고있는 코드입니다 : D

감사합니다 얘들 아

+0

오류는 ' ""값을 숫자로 변환 할 수 없다고 말합니다. 따라서 number가 공백이 아닌'0'을 사용하십시오. –

+0

나는 빈 문자열에'Integer.valueOf()'를하고있는 것이 문제가된다. – Ivan

+0

Android로 시작하기 전에 Java의 기본 사항을 배우는 것이 좋습니다. 그렇지 않으면 항상 문제가 발생합니다. – taurelas

답변

0

오류가 말한다 값을 숫자로 변환 할 수 없습니다. 그 값은 java.lang.NumberFormatException입니다. 숫자 대신 숫자 0을 사용하십시오. 먼저 edittext가 0인지 확인하십시오.

int first; 
if(editmanner.getText().toString().equals("")){ 
first = 0 
}else{ 
first = Integer.valueOf(editmanner.getText().toString()); 
} 

모든 int 변수에 대해 이렇게하십시오. 슬로우

-1

java.lang.NumberFormatException의 는 응용 프로그램이 캐릭터 라인을 수치 형으로 변환하려고 한 것을 나타 내기 위해서, 캐릭터 라인의 형식을 가지고 있지 않습니다.

logcat은 이미 크래시의 원인을 설명했습니다. EditText 중 하나 또는 모두에 빈 문자열이 있습니다. 문자열을 정수로 변환하려면 문자열이 숫자 (0,1,2 등) 여야합니다. EditText를 숫자 값 (예 : 0)으로 설정해야합니다.

0

업데이트 각 등의 검증과 코드가 변수 값 int :

if (editmanner().toString().isEmpty()) 
    first = 0; 
else 
    first = Integer.parseInt(editmanner().toString()); 

당신이 int 변수 (하지 Integer)를 가지고 있기 때문에이 parseInt 대신 valueOf

0

고마워를 사용하는 것이 바람직하다, 난 그냥 채워 (0) 및 지금 textedits 작동합니다. 제 바보 같은 질문에 사과하십시오.

공백을 표시하도록 텍스트 뷰에서이 0을 숨길 수있는 방법이 있습니까?

+0

edittexts를 0으로 채울 필요가 없습니다. 비워 두어 확인하고, 답안에 샘플을 제공했습니다. –