我的构造函数没有采用变量

时间:2016-04-08 01:02:01

标签: java constructor bluej

我的构造函数不接受变量。用户运行类Clock,理论上,输入的小时和分钟将传递给类Time。不幸的是,变量小时和分钟不会传递给时间,代码也不会执行。

这是第一个用户输入当前时间的类。

/**
 * Write a description of class Clock here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

import java.util.Scanner;

public class Clock
{
public static void main (String [ ] args)
{
    Scanner scan = new Scanner (System.in);
    int hour = 12;
    int minute = 00;

    System.out.println("Please enter the hour.");
    System.out.println();

    System.out.print("-->  ");
    hour = scan.nextInt();

    System.out.println();
    System.out.println();

    System.out.println("Please enter the minute.");
    System.out.println();

    System.out.print("-->  ");
    minute = scan.nextInt();

    System.out.println();
    System.out.println();
    System.out.println();

    if (hour > 24 || hour < 00)
    {
        hour = 24;
    }

    if (minute > 59 || minute < 00)
    {
        minute = 00;
    }

    Time CLOCK = new Time ();

    System.out.println(CLOCK);
}

}

这是第二类,它在输入的时间增加一分钟,在标准时间打印,并在军事时间打印。

/**
 * Write a description of class Time here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Time 
{
private int h;
private int m;

String string4;
String string7;
String mitime;

public void increment (String string1, int minute)
{
    int intime = minute + 1;
    String string3 = intime + "";
    string4 = string1+string3;
}

public void convert (int h, int m)
{
    int hour = h;
    int minute = m;

    String zone = "";

    if (hour > 12)
    {
        zone = "PM";
    }
    else
    {
        zone = "AM";
    }

    if (hour > 12)
    {
        hour = hour - 12;
    }

    String string5 = hour + "";
    String string6 = minute + "";
    string7 = hour + ":" + minute + " " + zone;

}

public void clock (int hour, int minute)
{
    h = hour;
    m = minute;


    convert(h, m);

    int integer = hour;

    String string1 = integer + "";

    int integer2 = minute;


    String string2 = integer2 + "";

    mitime = integer + string2;

    increment(string1, minute);
}

public String toString ( )
{
    return "Military Time:\n" + 
            mitime +
            "\n\nStandard Time:\n" +
            string7 +
            "\n\nIn one minute, it will be " +
            string4;
}

}

你能指出我哪里出错了,以及我如何解决这个错误?

非常感谢。

1 个答案:

答案 0 :(得分:1)

如果要将值传递给它,您的Time对象需要一个构造函数:

public class Time{
    public Time(int value1, int value2) {
      h = value1;
      m = value2;
    }
}

或类似的东西:)如果你想创建一个新的时间实例,你可以调用你的构造函数

new Time(3, 4)

另外,请记住int值是正常整数。你不能存储00或01,它们将被存储为0和1.如果你想将你的分钟视为00左右,你需要想办法以一种很好的方式显示这些值!