有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用来自不同类的方法的java

我对Java非常陌生,这让我非常困惑

我有两节课。一个(controlNumber)有两个用于数字的int字段,一个是当前数字,一个是最大数字(一旦当前数字达到此值,它将重置为1)。构造函数将当前数字初始化为1,并将最大值作为参数(并检查最大值是否为正且小于100)
在方法中,我有一个返回当前数字的方法,一个返回最大数字的方法,一个将最大值设置为当前值的方法,一个将1添加到当前值(朝最大值方向移动)的方法,最后一个方法返回一个带有当前数字的字符串,如果当前数字只有一个数字,则将“0”放在前面(因此5变为05)
toString如下所示:

public String toString()
    {
        if (currentNumber > 9) {
            return Integer.toString(currentNumber);
        }
        else {
            return ("0" + Integer.toString(currentNumber));
        }
    }

这门课很好
第二节课是我开始遇到问题的地方。它有两个属于上述类的字段。构造函数使用两个不同的最大值初始化它们。所有这些似乎都在起作用
现在我需要一个toString方法,它将返回一个字符串,其中包含两个字段的当前值,如果它是一位数字,则该字符串前面的“/”介于和“0”之间(因此,如果天是3,月是11,则返回“03/11”)。我的第一个想法是使用类似于我上面使用的整数的东西。toString,但事实证明您不能这样做(即使controlNumber类中的字段是int)。因此,我想从上面使用我的方法(在另一个类中),因为它可以实现我想要的大部分功能,但我不知道如何实现

我希望我有道理,希望有人能帮助我找到解决问题的方法


共 (3) 个答案

  1. # 1 楼答案

    我的方法是:

    首先,创建一个用于格式化整数的实用函数:

    public class StringUtil {
    
        public static String format(int i) {
            if (i > 9) {
                return String.valueOf(i);
            } else {
                return ("0" + String.valueOf(i));
            }
        }
    
    }
    

    现在,您可以从其他类中使用此实用程序代码:

    public String toString() {
        return StringUtil.format(currentNumber);
    }
    

    public String toString() {
        return StringUtil.format(max1) + "/" + StringUtil.format(max2);
    }
    
  2. # 2 楼答案

    如果有两个以上类型的字段,称为a和b

    public String toString() {
        return a + "/" + b;
    }
    

    您不需要显式调用toString(),因为这是一种行为。唯一的区别是,如果a或b为null,这将打印“null”,而调用toString()将抛出NullPointerException

    顺便说一句,你可以把你的方法缩短到

    public String toString() {
        return (currentNumber > 9 ? "" : "0") + currentNumber;
    }
    
  3. # 3 楼答案

    我假设你的意思是有一个类SomeClass,它有两个类型为ControlNumber的字段,你想实现SomeClass.toString()来打印这些字段的组合值。如果是这样的话,你可以这样做:

    class SomeClass
    {
        ControlNumber number1;
        ControlNumber number2;
    
        [...]
    
        public String toString()
        {
            return number1.toString() + "/" + number2.toString();
        }
    }
    

    更新:

    正如Peter所指出的,对number.toString()的显式调用可以省略,因此上述内容可以重写为:

        public String toString()
        {
            return number1 + "/" + number2;
        }