2012-04-10 18 views
0

本当にいくつかの助けが必要です、私は3つのeditTextを持っており、hh:mm:ssの2つから入力を取得する必要があります。その後、配列とforループを使って違いを見つけ、3番目のeditTextにテキストとして設定します。すべての入力は素晴らしいでしょう!配列要素の相違点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); 

      } 
     }); 
    } 
} 

*また、 私は1でこれを実行する場合:終了時間として6:5:開始時間 と4と3:2。それは終了時間の最後の桁だけを吐き出す(6)。終了時刻を3:4:5に設定すると、editTextに5が表示されます。

+0

typo/mistakeなのか、 '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を取り除くだけでいいと思います。

関連する問題