当前位置: 首页 > 知识库问答 >
问题:

更改静态布尔值

阎功
2023-03-14

我有一个学校作业,要做一个程序,结果要么正确,要么错误。这关系到一年是否是闰年。目前的问题是,我使用的是公共静态布尔值,而不是公共布尔值。这是我的代码:

public class Assignment {

    static boolean isLeapYear;

    public static void main(String[] args)
    {        
        int year = 2000;
        isLeapYear(year);
    }
    public static boolean isLeapYear(int year) {
        if (((year/100)%4 == 0 && year%4 ==0) || (year % 400 == 0))
            isLeapYear = true;

        else
            isLeapYear = false;

        System.out.println(isLeapYear);

        return isLeapYear;
    }
}

现在int年是2000年,但是规则是这样的:闰年是一年,可以除以4,除非这一年是一个新世纪的开始(1700, 1800, 1900.....)。所以即使你可以把1900除以4,你也不能把它除以400,所以这是错误的。所以再一次问一个问题:我需要做什么才能使用公共布尔而不是公共静态布尔?

共有3个答案

高德水
2023-03-14

静态方法只能访问静态变量,只有实例方法才能访问实例方法,如果你认为面向对象,你可以推断出实例方法。

以防万一,你应该在一年内存储布尔值

public class Testing {
boolean isLeapYear;

public static void main(String[] args)
{        
    int year = 2000;
    new Testing().isLeapYear(year);
}
public boolean isLeapYear(int year) {
    if (((year/100)%4 == 0 && year%4 ==0) || (year % 400 == 0))
        isLeapYear = true;

    else
        isLeapYear = false;

    System.out.println(isLeapYear);

    return isLeapYear;
}
}
仲法
2023-03-14

您不需要将此结果存储在任何地方。

使用:

public static boolean isLeapYear(int year) 
{
   return (((year/100)%4 == 0 && year%4 ==0) || (year % 400 == 0));
}
柯曜文
2023-03-14

如果要使方法非静态,则需要创建类的实例,以便从主方法调用该方法。然后您可以使您的isLeapYear变量非静态:-

boolean isLeapYear;
public static void main(String[] args)
{        
    int year = 2000;
    new Assigment().isLeapYear(year);
}
public boolean isLeapYear(int year) {
    // access isLeapYear as `this.isLeapYear` or just `isLeapYear`
}

但是,准确地说,您不需要将结果存储在布尔变量中。如果要返回某个表达式的布尔值,则可以直接返回该表达式。

因此,在方法中使用此代码也可以很好地工作,而且可读性更高,并且让该方法是静态的:-

return (((year/100)%4 == 0 && year%4 ==0) || (year % 400 == 0))

从你的主要通话中:-

System.out.println("Year : " + year + ", is leap year: " + isLeapYear(year));
 类似资料:
  • 问题内容: 我有一个线程,它等待布尔值更改,如下所示: 这不是我首选的方法,因为这会导致大量CPU消耗。 有什么方法可以阻止线程,直到布尔值更改其状态? 问题答案: 这不是我首选的方法,因为这会导致大量CPU消耗。 如果这实际上是您的工作代码,则只需保留该代码即可。每秒检查一次布尔值不会导致可测量的CPU负载。没有任何。 真正的问题是检查该值的线程可能由于缓存而没有看到任意长时间的更改。为了确保该

  • 问题内容: 我有一个MPClient和MultiplayerMatch类。MultiplayerMatch在其构造函数中创建一个MPClient可运行线程。 为了避免数据溢出,我在MultiplayerMatch中有一个名为“ moved”的布尔值,当播放器移动时,它会变为true。 在updateMatch方法中,如果有任何播放器移动,则“ moved”变为true,这允许MPClient输入i

  • 我有一个私有int数组,我需要以某种方式找到长度,但在静态类下无法做到这一点。我必须保持类的静态,是否可以添加其他方法来将a.length更改为其他方法? 该问题是由a.length引起的。

  • 因此,我的任务是制作多个“动物”类,并在空白绘图面板上运行它们。每只动物都以特定的方式移动,当它们与不同的动物重叠时,“入侵”的动物获胜,而另一只动物被移走。我的老师告诉我使用一个布尔值,如果两个动物在相同的坐标上交叉,则返回true(动物死亡),而在所有其他情况下返回false。 我在动物类上设置了一个自动返回false的布尔方法“isSameLoc()”,但是我不知道当动物在主客户端类中重叠时

  • 我编写了以下代码来模拟一个名为ValidatorUtil的类,该类在测试中用于验证字符串,所以我编写了ValidatorUtil应该总是返回true,但它总是返回false,最终实际上调用了ValidatorUtil的isValid方法,该方法将结果返回为false。我已经尝试过所有的匹配器,比如mockito.any()和mockito.any(configurator.class)但是没有成功

  • 现在,我有一个简单的Spring Boot应用程序,它为静态图像提供服务,我将这些图像放在了resources/static/img中。这对于显示实际内容来说很好,但我想解决两件事: > 我不希望这些图像中的任何一个与生成的文件捆绑在一起,我知道将这些图像放在文件夹中会做到这一点。 使用我当前的设置,为了在webapp上看到新图像,我必须将其添加到文件夹并重新启动。相反,我希望Spring提供特定