0

真的需要一些帮助,我有 3 个 editText,我需要从 hh:mm:ss 中的两个中获取输入。然后使用数组和for循环找出差异,并在第三个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

我认为您的代码中有两个错误:

首先是任务

        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 回答