如何打印出这个布尔值?(JAVA)

cut*_*tjm 7 java printing boolean

我尝试了一些不同的方法,比如print(boolean isLeapYear)和其他一些方法,但我无法弄清楚如何使它工作.它总是说我有一个缺少的类(布尔是原始的,它需要一个吗?)无论如何,如果isLeapYear if-else语句是错误的,我不担心那些..我只需要弄清楚如何打印超出布尔值; 任何帮助/点在正确的方向非常感谢=]

import java.util.Scanner;

public class booleanfun    {
    boolean isLeapYear;

    public static void main(String[] args)
    {
        System.out.println("Enter a year to determine if it is a leap year or not: ");
        Scanner kboard = new Scanner(System.in);
        int year = kboard.nextInt();
    }
public boolean isLeapYear(int year)
  {
    if (year % 4 != 0)
        isLeapYear = false;

    else if ((year % 4 == 0) && (year % 100 == 0))
        isLeapYear = false;

    else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0))
        isLeapYear = true;

    else
        isLeapYear = false;

System.out.println(isLeapYear);
System.out.println(boolean isLeapYear);

    return isLeapYear;
    }
}
Run Code Online (Sandbox Code Playgroud)

ncm*_*ist 10

有几个问题.

一个是风格; 总是大写班级名称.这是一种普遍观察到的Java约定.不这样做会让其他程序员感到困惑.

其次,线

System.out.println(boolean isLeapYear);
Run Code Online (Sandbox Code Playgroud)

是语法错误.删除它.

第三.

您永远不会从主程序中调用该函数.这就是为什么你永远不会看到对输入的任何回复.

  • @ekaj他告诉你究竟如何让它发挥作用.他还为您提供了长期帮助您的提示.要添加他所说的内容,您应该更改布尔值的名称或方法,因为它们具有相同的名称.这些是有用的批评,没有意图让你失望. (3认同)

Mik*_*uel 9

System.out.println(isLeapYear);
Run Code Online (Sandbox Code Playgroud)

应该工作得很好.

顺便说一下,在

else if ((year % 4 == 0) && (year % 100 == 0))
    isLeapYear = false;

else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0))
    isLeapYear = true;
Run Code Online (Sandbox Code Playgroud)

year % 400永远不会达到这个部分,因为如果(year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0)是真的,那么(year % 4 == 0) && (year % 100 == 0)一定要成功.

也许交换这两个条件或重构它们:

else if ((year % 4 == 0) && (year % 100 == 0))
    isLeapYear = (year % 400 == 0);
Run Code Online (Sandbox Code Playgroud)


小智 7

您应该只删除布尔变量前面的“布尔值”。

像这样做:

boolean isLeapYear = true;
System.out.println(isLeapYear);
Run Code Online (Sandbox Code Playgroud)

或者

boolean isLeapYear = true;
System.out.println(isLeapYear?"yes":"no");
Run Code Online (Sandbox Code Playgroud)

另一件事是您似乎根本没有调用该方法!方法和变量都不是静态的,因此,您必须首先创建类的实例。或者您只是将两者都设为静态,而不是直接从您的主要方法调用您的方法。

因此,代码中有几个错误。也许你应该从一个更简单的例子开始,而不是重新编写它,直到它达到你想要的效果。

例子:

import java.util.Scanner;

public class booleanfun    {
    static boolean isLeapYear;

    public static void main(String[] args)
    {
        System.out.println("Enter a year to determine if it is a leap year or not: ");
        Scanner kboard = new Scanner(System.in);
        int year = kboard.nextInt();
        isLeapYear(year);
    }
    public static boolean isLeapYear(int year) {
        if (year % 4 != 0)
        isLeapYear = false;

        else if ((year % 4 == 0) && (year % 100 == 0))

        isLeapYear = false;

        else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0))
            isLeapYear = true;

        else
            isLeapYear = false;

        System.out.println(isLeapYear);

        return isLeapYear;
    }
}
Run Code Online (Sandbox Code Playgroud)