0

このばかげた時間プログラムにまだ取り組んでいます....私の新しい問題は計算にあります.分が合計に追加されていないようで、その理由がわかりません..inoutはいつものように大歓迎です. )

public  class Time {

    public int Minutes, Hours, TotalMin;
    private String  correctedMinutes ;
    public String valid, TimeofDay;
    public String error, noerror;


    //-----------------------------------------------------------------
    //  Sets up the time by defining its minutes and hours 
    //-----------------------------------------------------------------

public Time() {
    this.Hours = 0;
    this.Minutes = 0;}

public Time(int hour, int minute, String timeofday) {
    this.Hours = hour;
    this.Minutes = minute;
    this.TimeofDay = timeofday;}


public String testTimeofDay ( String timeofday)

{ 
    if  (TimeofDay.equals ("AM")) {TimeofDay="AM";
         return "";}

     else if (TimeofDay.equals("PM")) {TimeofDay="PM";
         return "";}

        else {TimeofDay="AM";
        return "Invalid Entry: AM/PM";}
    }

public String testHoursMinutes(int hours, int minutes)

{
    if (Minutes>59|| Minutes<0||Hours>23 || Hours<0) 
        {Minutes=0;
        Hours=0;
        TimeofDay="AM";
        return "Invalid Entry: Incorrect Value";}

            else {Hours=hours;
            Minutes=minutes;
            return "";}



}


public int addMinutes (int hours, int minutes, int elapsedMin)
    { 
        if (elapsedMin<0)
            TotalMin=minutes;

            else {
            TotalMin=elapsedMin+Minutes;}

            return TotalMin;}

public String ConvertMintoHour (int hours, int minutes){        
        while (TotalMin>60)
            {TotalMin=TotalMin-60;
            Hours=Hours+1;   
            if (Hours==13)
             { Hours=0;

             Minutes=TotalMin;
             }}
return(Hours+ " " +Minutes);




    }   
public String toString ()
        {
            String correctedMinutes = String.format("%02d", Minutes);
            return (Hours+ ":" + correctedMinutes + TimeofDay);     }





}

そして、ここにテストコードがあります:

import java.util.Scanner;


public class TimeTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub


int minutes, hours, elapsedMin; 
String timeofday, startTime;

Scanner scan=new Scanner (System.in);

System.out.println("Please enter starting hour (1-12):");
hours=scan.nextInt();
System.out.println("Please enter starting minute (0-59):");
minutes=scan.nextInt();
System.out.println("Please enter AM or PM:");
timeofday=scan.next();


Time classtime = new Time (hours, minutes, timeofday);

System.out.println(classtime.testTimeofDay(timeofday));
System.out.println(classtime.testHoursMinutes (hours, minutes));
 System.out.println(classtime.toString());


System.out.print("The class begins at ");
System.out.println (classtime.toString());

startTime=classtime.toString();

System.out.println("Enter a time in minutes representing the class duration:");
elapsedMin=scan.nextInt();

classtime.addMinutes (hours, minutes, elapsedMin);
System.out.println ("Class End Time:" + classtime.toString());


System.out.print(elapsedMin + " minutes after "+ startTime + " is ");
System.out.println (classtime.toString());





System.out.print("The class ends at ");
System.out.println (classtime.toString());


System.out.print("The class ends at ");

System.out.print("MILITARY");
}}
4

3 に答える 3

1

いくつかの問題がありますが、addMinutes方法から始めましょう...

public int addMinutes(int hours, int minutes, int elapsedMin) {
    if (elapsedMin < 0) {
        TotalMin = minutes;
    } else {
        TotalMin = elapsedMin + Minutes;
    }

    return TotalMin;
}

基本的に、hours決してminutes意味がなく、破棄する必要があります。

に追加elapsedMinしますTotalMinが、出力を生成するために使用されることはありません。

代わりに、値をHoursおよびMinutes変数に適用する必要があります。たとえば...

public int addMinutes(int elapsedMin) {

    int time = (Hours * 60) + Minutes;
    time += elapsedMin;

    Hours = time / 60;
    time = time % 60;
    Minutes = time;

    return time;

}

この概念は、メソッドにも適用できますConvertMintoHour;)

より簡単な解決策は、時間の内部概念を真夜中からの分数として管理することです。

これにより、「時間」クラスから分を簡単に追加または減算できます。準備ができたら、上記のアルゴリズムを使用して、出力を生成するために必要な時間と分を生成できます... IMHO

他の誰かがすでにこれを指摘していると思いますが、時間をかけて Java プログラミング言語のコード規則を読む必要があります。他の開発者がコードを読みやすくするのに役立ちます ;)

于 2013-10-23T06:10:24.603 に答える
1

メソッドString ConvertMintoHour (int hours, int minutes)で。からあなたの状態を変更します

while (TotalMin>60)

while (TotalMin>59)
于 2013-10-23T05:59:19.703 に答える
0

メソッドConvertMintoHourは次のように簡単に記述できます。

public String ConvertMintoHour() {
        int noOfHrs = TotalMin / 60;
        Hours = (Hours + noOfHrs) % 13;
        Minutes = TotalMin % 60;
        return Hours + " " + Minutes;
}
于 2013-10-23T06:23:12.097 に答える