2012-04-07 59 views
1

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

对不起,如果这是一个非常基本的问题。我花了好几天的时间在网络上试图了解问题。这是我第一次尝试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; 

回答

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的书。有许多好书可以用来开始你的基础知识。

0

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

第一次我的值是零,你的条件i == 2失败,那么它执行其他部分,所以它终止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的公共DurationFormatUtils到相当格式化。

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

阿帕奇百科全书具有非常好的实用功能,Apache的公地(郎)

+0

我应该拿出if和else语句,并把是否码后的for循环?哦,失去了回报; – 2012-04-07 03:23:39

+0

你究竟在做什么 – 2012-04-07 03:25:49

+0

我有三个EditText的。其中两个用于输入(例如hh:mm:ss)。第三个将在提交按钮被按下时显示差异。 – 2012-04-07 21:54:06

相关问题