2017-02-27 1 views
0

나는 하나의 필드 계산기를 만들기 위해 안드로이드 스튜디오에서 일하고있다계산기 한 필드를 기반으로

그것은 하나의 텍스트 필드, 버튼 및 다른 텍스트보기 일 것이다. 예를 들어 "2 + 5 * 6"을 입력하면 작동을 이해해야합니다.

아무도 도와 줄 수 있습니까? 내 코드 밖으로

점검

public class MainActivity extends AppCompatActivity { 
    public static final String equation = "[0-9]"; 

    String opr = " "; 
    int[] result; 
    int castedInt; 
    String temp; 
    String[] separated; 
    EditText txte; 
    TextView txtv; 

    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    public void buResult(View view) { 
     txte = (EditText)findViewById(R.id.editText); 
     for (int i = 0; i < txte.length(); i++) { 
      if (Pattern.matches(txte.toString(), equation)) { 
       separated[i] = txte.toString(); 
       temp = separated[i]; 
       castedInt = Integer.parseInt(temp.toString()); 
       result[i] = castedInt; 
      } 
      else { 
       opr = txte.toString(); 
      } 
      txtv.setText(result[i] + opr + result[i]); 
     } 
    } 
} 

답변

0

정규 표현식으로 정규 표현식을 사용해야합니다. documentation에 정의 된대로. 사용자 입력을 정규 표현식으로 변환해야합니다.

Pattern.matches(String regex, CharSequence input) 

또한 당신은 항상 전체 사용자의 입력을 사용하고 있습니다 :

separated[i] = txte.toString(); 

모든 인덱스가 동일한 포함됩니다 "분리".

0

은 (대신 처음부터 알고리즘을 만드는) 언어 지원을 사용 할 수있는 상태인지는 다음과 같이 사용할 수 있습니다

import javax.script.ScriptEngineManager; 
import javax.script.ScriptEngine; 
... 
ScriptEngineManager manager = new ScriptEngineManager(); 
ScriptEngine engine = manager.getEngineByName("js"); 
txtv.setText(engine.eval(txte.toString())); 

* 크레딧 : stackoverflow.com/a/2605051/936786

관련 문제