1

2 つの入力を取り、それらを減算するには、for ループと配列を使用する必要があります (input format 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

なぜ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)

于 2012-04-07T03:15:41.903 に答える