Java 使用for循环查找两个时间字符串(hh:mm:ss)之间的差异

Java 使用for循环查找两个时间字符串(hh:mm:ss)之间的差异,java,android,time,for-loop,Java,Android,Time,For Loop,我需要使用for循环和数组来获取两个输入并减去它们(输入格式hh:mm:ss)。然后在编辑文本中输出差异。但我似乎无法让我的代码运行 抱歉,如果这是一个非常基本的问题。我花了好几天的时间上网,试图了解这个问题。这是我第一次尝试Java @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main

我需要使用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;
@覆盖
创建时的公共void(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);
计算=(按钮)findViewById(R.id.bCalc);
clear=(按钮)findViewById(R.id.bClear);
calc.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
int hh=tot[0];
int mm=tot[1];
int ss=tot[2];
字符串sGet2=end.getText().toString();//结束到字符串
字符串sGet1=start.getText().toString();//开始到字符串
String[]erA=sGet2.split(“:”;//结束字符串到结束数组
String[]srA=sGet1.split(“:”;//从字符串开始到字符串数组
对于(int i=0;i
你的代码不工作并不奇怪……很多代码从未执行过

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!?
}
for(int i=0;i
如果这是您第一次尝试编程,那么我认为您应该从简单一点的程序开始,例如控制台程序。还可以使用调试器逐步完成代码,以便查看控制流的工作方式


您可能还想买一本教Java的书。有许多好书可以让您从基础知识开始学习。

您的代码不起作用并不奇怪……很多代码从未执行过

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!?
}
for(int i=0;i
如果这是您第一次尝试编程,那么我认为您应该从简单一点的程序开始,例如控制台程序。还可以使用调试器逐步完成代码,以便查看控制流的工作方式


您可能还想买一本教Java的书。有许多好书可以让您从基础开始学习。

很好的代码为什么要返回else部分。当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)

很好的代码为什么要在else部分返回。它在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)

我应该去掉if和else语句并将if代码放在for循环之后吗?哦,并失去返回;你到底想做什么我有三个EditText。其中两个用于输入(例如hh:mm:ss)当按下提交按钮时,第三个按钮将显示差异。谢谢你,我将试一试。谢谢你花时间发布。我是否应该取出if和else语句,并将if代码放在for循环之后?哦,并失去返回;你到底想做什么我有三个EditText。其中两个用于输入(例如hh:mm:ss)当按下提交按钮时,第三个按钮将显示差异。谢谢,我将试一试。感谢您花时间发布。