0

本当に助けが必要です。3 つの editText があり、hh:mm:ss でそのうちの 2 つから入力を取得する必要があります。次に、配列と for ループを使用して違いを見つけ、3 番目の editText でテキストとして設定します。どんな入力でも素晴らしいでしょう!

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:2:3、終了時刻が 4:5:6 になります。(6) 終了時間の最後の桁だけを吐き出します。終了時間を 3:4:5 に設定すると、editText に 5 が表示されます。

4

1 に答える 1

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];

そして、最後の計算はむしろこれであるべきだと思います:

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を取り除く必要があると思います。

于 2012-04-10T22:44:55.997 に答える