0
        Console.Write("Type in the number of seconds: ");
        int total_seconds = Convert.ToInt32(Console.ReadLine());

        int hours = total_seconds / 3600;
        total_seconds = total_seconds % (hours * 3600);
        int minutes = total_seconds / 60;
        total_seconds = total_seconds % (minutes * 60);
        int seconds = total_seconds;
        Console.WriteLine("Number of hours: " + hours + " hours" + "\nNumber of minutes: " + minutes + " minutes" + "\nNumber of seconds: " + seconds + " seconds");
        Console.ReadLine();

秒の合計量をそれぞれの時間、分、秒に変換するプログラムを作成することに成功しました。私はプログラムが3660秒未満の合計時間、分などを表示できるようにしたくないので問題を抱えていますが、これは可能ではないようです。この問題を解決する方法はありますか?

4

2 に答える 2

3

問題は、モジュラス (%演算子) を取得する行にあります。時間全体をすべて削除した後の残りの秒数が必要です。これはtotal_seconds % 3600です。3600 秒未満の場合、コードは を実行しようとしますtotal_seconds % 0。これはゼロによる除算です。次のことを試してください。

int hours = total_seconds / 3600;
total_seconds = total_seconds % 3600;
int minutes = total_seconds / 60;
total_seconds = total_seconds % 60;
int seconds = total_seconds;
于 2012-09-26T09:03:12.920 に答える
0

編集
チョウレットの答えはこれをよりエレガントに行います-彼のコードを使用してください。

これは私にとってはうまくいくようです(ステートメントにより、私たちがゼロifの場合にゼロで除算されないようにします:hoursminutes

int total_seconds = 3640;

int hours = 0;
int minutes = 0;
int seconds = 0;

if (total_seconds >= 3600)
{
    hours = total_seconds / 3600;
    total_seconds = total_seconds % (hours * 3600);
}

if (total_seconds >= 60)
{
    minutes = total_seconds / 60;
    total_seconds = total_seconds % (minutes * 60);
}

seconds = total_seconds;
Console.WriteLine("Number of hours: " + hours + " hours" + "\nNumber of minutes: " + minutes + " minutes" + "\nNumber of seconds: " + seconds + " seconds");
Console.ReadLine();
于 2012-09-26T09:03:43.330 に答える