0

私はプログラミングに非常に慣れていません。このコードは完全にはほど遠いので、素人っぽさを許してください。

このコードは、複数のクラスを使用して実行時間に時間を追加することです

これが私の時間クラスです:

public  class Time {

private int Minutes, Hours, TotalMin;
private String stringAM= "AM", stringPM = "PM", correctedMinutes ;
public String valid, TimeofDay;
public static int error;
public Object toString;

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




    //-----------------------------------------------------------------
public  Time(int  hours, int minutes)
    { if (minutes>59|| minutes<0|| hours>23 || hours<0) {
       Hours=0;
       Minutes=0;
          error=1;
          return;
          }
      else {Hours=hours;
            Minutes=minutes; 
            error=0;
            return;
      }}

public int Time2(int minutes, int hours) {
         if (Hours<12 || Hours>0 || TimeofDay.equals ("AM") || TimeofDay.equals ("PM")) {
               Hours=0;
               Minutes=0;
                  return error=0;

                      }
              else { 
                  Hours=hours;
                    Minutes=minutes;
                     return error=0;
                  }
            }

    public int addMinutes (int Hours, int Minutes, int elapsedMin)
    { 
        if (elapsedMin<0)
        return error=1;

            else {
            TotalMin=elapsedMin+Minutes;
                    return error=0;}
        }{

    while (TotalMin>60)
            {TotalMin=TotalMin-60;
            Hours=Hours+1;   if (Hours==25)
             { Hours=0;
             Minutes=TotalMin;
             }
    }
        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; 
String TimeofDay;
Scanner scan=new Scanner (System.in);

System.out.println("Please enter starting hour:");
hours=scan.nextInt();
System.out.println("Please enter starting minute:");
minutes=scan.nextInt();
System.out.println("Please enter AM or PM:");
TimeofDay=scan.next();

Time classtime = new Time (hours, minutes);
{}
classtime.Time2(minutes, hours);


int error=Time.error;
if (error==1)
    System.out.println("This is an invalid time");

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

    }}

基本的に、コードを実行すると実行が終了せず、代わりに出力される理由がわかりません。

"Null
 The class ends at Null"   

洞察はありますか?コードには他にも問題があることは認識していますが、さらに実行できるようになったら修正します

(ところで、メソッド Time 2 は非常に冗長に見えることを知っています。私の先生はクラスでそれを必要としているか、コンストラクターに含めただけです)

どんな入力でも大歓迎です

4

2 に答える 2

4

IDE の最初の自動修正オプションを盲目的にクリックしないでください。特に、それを読んだり理解していない場合は特にそうです。

toString は、Object 型のフィールドではなく、String 型のメソッドである必要があります。

Object toString;クラスで切り取ります。それは必要ありません。

toStringこれは、文字列を返すメソッドを呼び出すために必要なコードです。

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

そうは言っても、コードをより適切に整理して処理する必要があります。適切な命名規則を使用し、読みやすい方法でインデント/構造化してください。

于 2013-10-22T19:58:30.673 に答える