2012-04-10 4 views
0

정말 도움이 필요합니다. 나는 3 개의 editText를 가지고 있는데, 그 중 2 개의 입력을 hh : mm : ss로 가져와야합니다. 그런 다음 배열과 for 루프를 사용하여 차이를 찾고 세 번째 editText에 텍스트로 설정합니다. 모든 입력이 좋을 것입니다! 종료 시간 등의 6 : 5 : 시작 시간 4로 3 : 2 : 배열 요소 differerences for 루프를 사용하여

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    end = (EditText) findViewById(R.id.etEnd); 
    start = (EditText) findViewById(R.id.etStart); 
    diff = (EditText) findViewById(R.id.etDiff); 
    calc = (Button) findViewById(R.id.bCalc); 
    clear = (Button) findViewById(R.id.bClear); 

    calc.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      int h1 = s[0]; 
      int m1 = s[1]; 
      int s1 = s[2]; 

      int h2 = e[0]; 
      int m2 = e[1]; 
      int s2 = e[2]; 

      String sGet2 = end.getText().toString(); // end to string 
      String sGet1 = start.getText().toString(); // start to string 

      String[] erA = sGet2.split(":"); // end string to end array 
      String[] srA = sGet1.split(":"); // start string to string array 

      for (int i = 0; i < srA.length; i++) { 

       inted = Integer.parseInt(erA[i].trim()); 
       intst = Integer.parseInt(srA[i].trim()); 

       s[i] = intst; 
       e[i] = inted; 
      } 


      if (s2 > s1) {m1--;s1 += 60;} 

      if (m2 > m1) {h1--;m1 += 60;} 

      int H, M, S; 
      S = s1 - s2; 
      M = m1 - m2; 
      H = h1 = h2; 
      diff.setText(H + ":" + M + ":" + S); 

      } 
     }); 
    } 
} 

*

또한 I는 1이 실행할 경우. 그것은 종료 시간의 마지막 숫자 만 뱉어 낸다. 종료 시간을 3 : 4 : 5로 설정하면 editText에 5가 표시됩니다.

+0

오타 또는 실수입니까, 아니면 'H = h1 - h2;'가 아니라 'H = h1 - h2;'(마이너스 대신 등호)가 필요합니까? '[]'와'e []'선언은 무엇입니까? –

+0

그게 실수였습니다. int [] s; \t int [] e; * 이제 Calc 버튼을 누르면 충돌이 발생합니다. –

답변

0

난 당신의 코드에서 2 실수가 있다고 생각 :

 int h1 = s[0]; 
     int m1 = s[1]; 
     int s1 = s[2]; 

     int h2 = e[0]; 
     int m2 = e[1]; 
     int s2 = e[2]; 

먼저 assignements는 다음 나는 마지막에 계산이 아니라이 있어야한다고 생각 :

if (s[2] > s[1]) { 
    m[1]--; // What happens if m[1] is 0? 
    s[1] += 60; 
} 

if (m[2] > m[1]) { 
    h[1]--; 
    m[1] += 60; 
} 

S = s[1] - s[2]; 
M = m[1] - m[2]; 
H = h[1] - h[2]; 

변수를 혼합합니다. 제 생각에 당신은 (클래스 멤버가 아닌) 당신의 메소드에서 int [] (s와 e)의 배열을 선언하고 s1, s2, m1, m2, h1과 h2를 제거해야한다고 생각합니다.

관련 문제