1

我需要使用 for 循环和数组来获取两个输入并减去它们(输入格式hh:mm:ss)。然后在editText中输出差异。但我似乎无法让我的代码运行。

对不起,如果这是一个非常基本的问题。我花了几天时间在网上寻找试图理解这个问题。这是我第一次尝试 Java。

@Override
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() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
                int hh = tot[0];
                int mm = tot[1];
                int ss = tot[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());

                tot[i] = inted - intst;

                if (i == 2) { 
                    String  mt = ":" + mm;
                    String  st = ":" + ss;
                    String  ht = ":" + hh;
                    String tota = mt + st;
                    String total = tota + ht;

                    out = String.format("%4.4s", total);

                    diff.setText(out);

                } else
                    return;
4

2 回答 2

1

您的代码不起作用也就不足为奇了……很多代码永远不会执行!

for (int i = 0; i < srA.length; i++) {
    // bla bla bla
    if (i == 2) { 
        // This code never runs because i is always 0.
    } else
        return;  // What is this doing here!?
}

如果这是您第一次尝试编程,那么我认为您应该从更简单的东西开始,例如控制台程序。还可以使用调试器单步执行代码,以便您了解控制流的工作方式。

您可能还想购买一本教 Java 的书。有很多好书可以帮助你从基础开始。

于 2012-04-07T02:25:38.090 回答
0

伟大的代码为什么在其他部分返回。它在 i=0 时终止执行。那是因为 for 循环开始执行。

第一次 i 值为零并且您的条件 i==2 失败然后它执行 else 部分因此它终止 for 循环。那么for循环有什么用??????

使用下面的代码::

String time1 = "22:55:00";
String time2 = "23:05:00";
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
Date date1 = format.parse(time1);
Date date2 = format.parse(time2);
long difference = date2.getTime() - date1.getTime();        

区别在于毫秒,您可以将其转换为任何单位,或者您可以使用 apache-commons 中的 DurationFormatUtils 来漂亮地格式化它。

System.out.println("Duration: "+DurationFormatUtils.formatDuration(difference, "HH:mm:ss"));

apache commons 有非常好的实用功能,apache-commons (lang)

于 2012-04-07T03:15:41.903 回答