마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

EditText에 setText 질문드립니다.

0 추천

editText값들 중 두개의 값을 넣으면 나머지 editText에 각 결과값이 들어갑니다

그런데 문제는.. editText 두개의 값을 넣을 때에 한자리 숫자로는 계산이 되는데 2자리 숫자 이상을 넣으면 계산 자체가 안됩니다. 앱 중지도 되지 않지만요... 고수님들 알려주십셔~~

public void onButton20Clicked(View v) {
    double num3 = P1;
    double num4 = Pdb;
    double num5 = U1;
    double num6 = Udb;
    double num7 = I2;
    double num8 = Idb;

    if (editText53.getText().length()==0 & editText54.getText().length() ==0 & editText55.getText().length() ==0 & editText56.getText().length() ==0 & editText57.getText().length()==0 &
            editText58.getText().length()==0 & editText59.getText().length()==0) { //숫자가 입력되지 않는다면 "숫자를 입력해주세요" Toast메시지가 나옴.
        Toast.makeText(getApplicationContext(), "숫자를 입력해 주세요.", Toast.LENGTH_LONG).show();}
        {
        if (editText53.getText().length() == 1 & editText54.getText().length() == 0 & editText55.getText().length() == 0 & editText56.getText().length() == 0 & editText57.getText().length() == 0 &
                editText58.getText().length() == 0 & editText59.getText().length() == 1) {

            double num1 = Double.parseDouble(editText53.getText().toString()) * num3; //p
            double num2 = Double.parseDouble(editText59.getText().toString()); //R


            double pdb = (10*Math.log10(num1))*num4;
            editText54.setText(Double.toString(pdb));

            double u = Math.sqrt(num1*num2)*num5;
            editText55.setText(Double.toString(u));

            double udb = (20*Math.log10(u))*num6;
            editText56.setText(Double.toString(udb));

            double i = Math.sqrt(num1/num2)*num7;
            editText57.setText(Double.toString(i));

            double idb = (20*Math.log10(i))*num8;
            editText58.setText(Double.toString(idb));

        }

 

 

후니02 (820 포인트) 님이 2015년 11월 19일 질문

2개의 답변

+1 추천
 
채택된 답변
에러를 보여주시겠어요?에러를 보여주시면 더 빠르게 답변될것같은데...ㅠㅠ
야도란 (1,410 포인트) 님이 2015년 11월 19일 답변
후니02님이 2015년 11월 20일 채택됨
아니요ㅠㅠ.. 에러가 없고 그냥 반응이 없어요ㅠㅠ
editText53.getText().length() == 1의 길이를 1으로 해서 그런게 아닐까요?ㅎㅎ
editText53.getText().length() >= 1 으로 해보심이 어떤지 ㅎㅎ

물론 editText59.getText().length() == 1 같이 ==을 >=으로
아마 숫자 1자리는 길이가 1
10자리 이상은 길이가 1초과이라 그런것 같아요 ㅎㅎ
100의 자리는 길이가 3인가요?
우와 해결했습니다 감사합니다ㅠㅠ!!
+1 추천
소스가 짤려서 잘 안보입니다만..

에러도 없고 반응도 없다는건 if문 조건을 만족하지 않아서 if문안쪽으로 안들어오는게 아닌지..

맨처음 if문을 보면 길이가 0일때 토스트를 띄우는데, 예외처리를 하신거겠죠. 길이가 0이면 연산안하고

메시지를 띄우는.

그런데 setText 하는부분의 들여쓰기가 맨처음 if 안쪽인것을 보니 그 예외처리 안에 연산부가 들어가있는거 같은데..

 

setText 하는부분을 if문 밖으로 빼서 뭐가 뜨는지 일단 한번 보세요. 그게 우선일듯 합니다.

 

그리고, 예외처리 하는부분에 있어서, 모든 edittext에 값이 입력되야 연산을 하도록 하고계신듯 한데,

그러면 연산자를 &&가 아닌 ||를 쓰는게 맞습니다. edittext에 값이 있어야 연산을 진행할텐데 저렇게 &&로 처리를

해버리면 10개중 1개에 값을 입력 안했다고 가정할때, if조건에 만족하질 않죠. 입력시 빈칸이 하나라도 있으면

연산을 하지 않기 위해서는 or연산을 하는게 맞다고 생각합니다.
아시리 (8,400 포인트) 님이 2015년 11월 20일 답변
답변 감사합니다.
그런데 만약.. 9을 입력했을때는 계산이 되고, 10을 입력했을땐 계산이 안되는 이유는 뭘까요? 한자리 수로는 계산이 되는데 두자리 이상부터는 아예 계산이 안되는 이유도 답변과 관계가 있는건가요?
...