Java 如何打印此布尔值?(爪哇)
我尝试了一些不同的方法,比如print(booleanisleapyear)和其他一些方法,但我不知道如何让它工作。它总是说我缺少一个类(boolean是基本类,它需要一个吗?)。。我只需要弄清楚如何打印出布尔值;非常感谢您向正确方向提供的任何帮助Java 如何打印此布尔值?(爪哇),java,printing,boolean,Java,Printing,Boolean,我尝试了一些不同的方法,比如print(booleanisleapyear)和其他一些方法,但我不知道如何让它工作。它总是说我缺少一个类(boolean是基本类,它需要一个吗?)。。我只需要弄清楚如何打印出布尔值;非常感谢您向正确方向提供的任何帮助 import java.util.Scanner; public class booleanfun { boolean isLeapYear; public static void main(String[] args)
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;
}
}
应该很好用
顺便说一下,在
年份%400
部分将永远不会到达,因为如果(年份%4==0)和&(年份%100==0)和&(年份%400==0)
为真,则(年份%4==0)和&(年份%100==0)
必须已成功
可以交换这两个条件或重构它们:
else if ((year % 4 == 0) && (year % 100 == 0))
isLeapYear = (year % 400 == 0);
首先,变量“isLeapYear”与方法的名称相同。那只是坏习惯 其次,您没有将“isLeapYear”声明为变量。 Java是强类型的,所以您需要
boolean一年代码>
在你的方法的开头
此电话:
System.out.println(布尔值为一年)代码>
这完全是错误的。方法调用中没有声明
将isLeapYear声明为布尔变量后,可以调用
System.out.println(每年一次)代码>
更新:
我刚看到它被声明为一个字段。所以只需删除行System.out.println(booleanisleapyear)代码>
您应该了解,不能从main()方法调用isLeapYear。不能从具有实例的静态方法调用非静态方法。
如果您想调用它,您需要添加
booleanfun myBoolFun = new booleanfun();
System.out.println(myBoolFun.isLeapYear);
我真的建议您使用Eclipse,它会让您随时了解此类编译错误,而且这样更容易了解。有几个问题
public boolean isLeapYear(int year)
{
if (year % 4 != 0){
isLeapYear = false;
System.out.println("false");
}
else if ((year % 4 == 0) && (year % 100 == 0)){
isLeapYear = false;
System.out.println("false");
}
else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0)){
isLeapYear = true;
System.out.println("true");
}
else{
isLeapYear = false;
System.out.println("false");
}
return isLeapYear;
}
一是风格;始终将类名大写。这是一个普遍遵守的Java约定。不这样做会让其他程序员感到困惑
第二,线路
System.out.println(boolean isLeapYear);
是一个语法错误。删除它
第三
您从不从主例程调用该函数。这就是为什么你从来没有看到任何回复
到输入。只需删除布尔变量前面的“boolean”
这样做:
boolean isLeapYear = true;
System.out.println(isLeapYear);
或
另一件事是,您似乎根本不调用该方法!
方法和变量都不是静态的,因此,必须首先创建类的实例。或者,您只需要进行静态和静态操作,而不是直接从maim方法调用您的方法
因此,代码中有几个错误。也许你应该从一个更简单的例子开始,而不是重做它,直到它达到你想要的
例如:
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;
}
}
有几种方法可以解决您的问题,但这可能是最简单的方法:
您的main
方法是静态的,因此它无法访问实例成员(isLeapYear
字段和isLeapYear
方法)。纠正此问题的一种方法是将字段和方法同时设为静态:
static boolean isLeapYear;
/* (snip) */
public static boolean isLeapYear(int year)
{
/* (snip) */
}
最后,您实际上没有调用您的isLeapYear
方法(这就是您没有看到任何结果的原因)。请在int year=kboard.nextInt()之后添加此行;
:
isLeapYear(年);
这应该是一个开始。您可以遵循其他一些最佳实践,但目前只需关注代码的运行;您可以稍后重构。删除“System.out.println(boolean isLeapYear);”上面的行。这不是“boolean isLeapYear”吗?@OliCharlesworth,作为类字段。他可能会感到困惑,因为静态main方法无法调用非静态isLeapYear()方法。@OliCharlesworth它被声明为一个字段。还有其他问题。@ekaj他确切地告诉了你如何使它工作。他也给了你一些从长远来看对你有帮助的提示。要补充他的话,你应该更改布尔值的名称或方法,因为它们有相同的名称。这些都是有用的批评,没有意图为了让你失望,你能告诉我为什么这没用吗?@ekaj你看到最后一行了吗?上面写着return isLeapYear
,它甚至在第三个if中打印了一个不同的值(来自isLeapYear
)。为什么不只是System.out.println(isLeapYear)
回来之前?@BenvanGompel哦,天哪,你听说打字错误了吗?@Adel Boutros是的,但我会在周五把我的身体分成3-6块,基本上我需要两天时间把这些部分拼在一起
boolean isLeapYear = true;
System.out.println(isLeapYear?"yes":"no");
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;
}
}
static boolean isLeapYear;
/* (snip) */
public static boolean isLeapYear(int year)
{
/* (snip) */
}