在每个月程序中查找天数
Finding days in each month program
我是 java 的初学者,我正在尝试创建一个程序,要求用户输入月份,并打印该月的天数,并询问是否是闰年。我已经尝试将来自扫描仪的字符串 "yes" 输入转换为布尔值 true 或 false 输入,但是,我一直收到无法将字符串转换为布尔值的错误。我试过 parseString 方法但是没有成功。非常感谢对此问题的任何见解或帮助。感谢您的宝贵时间!
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int numberOfDays = 0;
System.out.print("What's the month? ");
String month = scan.nextLine();
System.out.print("Is it a leap year? ");
String leapYear = scan.nextLine();
boolean b1 = Boolean.parseBoolean(leapYear);
if (b1 = "yes") {
b1 = true;
}
else {
b1 = false;
}
switch(month) {
case "January":
numberOfDays = 31;
break;
case "February":
if (b1 = true) {
numberOfDays = 29;
} else {
numberOfDays = 28;
}
break;
}
}
你想要这样的东西:
boolean b1 = "yes".equals(leapYear);
删除 b1 = yes 的 if else 块。您不能将字符串与布尔值进行比较,为了进行比较,您需要两个等号,一个会尝试将 yes 分配给布尔值,这就是您的错误来源。
boolean b1 = false;
if (leapyear.equals("yes")) {
b1 = true;
}
我很确定 Boolean.parseBoolean(闰年) 只有在您输入 "true" 或 "false" 时才有效。
此外,在表达式中使用 = 时要小心。
if (b1 = "yes") {
可能会给你一个错误,但是
if (b1 == "yes") {
几乎更糟,因为它只会 return 如果 b1 指向完全相同的 "yes" 字符串对象,它几乎永远不会。因此使用 .equals() 可以满足您的期望。
试试下面的代码。
需要一些代码更正我在下面做了标记。
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int numberOfDays = 0;
System.out.println("What's the month? ");
String month = scan.nextLine();
System.out.print("Is it a leap year? ");
String leapYear = scan.nextLine();
boolean b1;
if ("yes".equalsIgnoreCase(leapYear)) {
b1 = true;
}
else {
b1 = false;
}
switch(month) {
case "January":
numberOfDays = 31;
break;
case "February":
if (b1) {
numberOfDays = 29;
} else {
numberOfDays = 28;
}
break;
}
}
您的代码不可编译,因为您将字符串分配给布尔变量。这是行不通的。试试下面的代码
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int numberOfDays = 0;
System.out.print("What's the month? ");
String month = scan.nextLine();
System.out.print("Is it a leap year? ");
String leapYear = scan.nextLine();
boolean b1;
if (leapYear.equalsIgnoreCase( "Yes")) {
b1 = true;
}
else {
b1 = false;
}
switch(month) {
case "January":
numberOfDays = 31;
break;
case "February":
if (b1 == true) {
numberOfDays = 29;
} else {
numberOfDays = 28;
}
break;
}
}
编辑:在 Java 中,单 =
用于赋值,双 =
(==
) 用于相等性测试。因此,在之前的代码中,b = true
将 b1
的值重置为 true
,而不管您的 isLeapYear
问题设置的先前值如何。所以其他部分永远不会执行。
我是 java 的初学者,我正在尝试创建一个程序,要求用户输入月份,并打印该月的天数,并询问是否是闰年。我已经尝试将来自扫描仪的字符串 "yes" 输入转换为布尔值 true 或 false 输入,但是,我一直收到无法将字符串转换为布尔值的错误。我试过 parseString 方法但是没有成功。非常感谢对此问题的任何见解或帮助。感谢您的宝贵时间!
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int numberOfDays = 0;
System.out.print("What's the month? ");
String month = scan.nextLine();
System.out.print("Is it a leap year? ");
String leapYear = scan.nextLine();
boolean b1 = Boolean.parseBoolean(leapYear);
if (b1 = "yes") {
b1 = true;
}
else {
b1 = false;
}
switch(month) {
case "January":
numberOfDays = 31;
break;
case "February":
if (b1 = true) {
numberOfDays = 29;
} else {
numberOfDays = 28;
}
break;
}
}
你想要这样的东西:
boolean b1 = "yes".equals(leapYear);
删除 b1 = yes 的 if else 块。您不能将字符串与布尔值进行比较,为了进行比较,您需要两个等号,一个会尝试将 yes 分配给布尔值,这就是您的错误来源。
boolean b1 = false;
if (leapyear.equals("yes")) {
b1 = true;
}
我很确定 Boolean.parseBoolean(闰年) 只有在您输入 "true" 或 "false" 时才有效。
此外,在表达式中使用 = 时要小心。
if (b1 = "yes") {
可能会给你一个错误,但是
if (b1 == "yes") {
几乎更糟,因为它只会 return 如果 b1 指向完全相同的 "yes" 字符串对象,它几乎永远不会。因此使用 .equals() 可以满足您的期望。
试试下面的代码。 需要一些代码更正我在下面做了标记。
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int numberOfDays = 0;
System.out.println("What's the month? ");
String month = scan.nextLine();
System.out.print("Is it a leap year? ");
String leapYear = scan.nextLine();
boolean b1;
if ("yes".equalsIgnoreCase(leapYear)) {
b1 = true;
}
else {
b1 = false;
}
switch(month) {
case "January":
numberOfDays = 31;
break;
case "February":
if (b1) {
numberOfDays = 29;
} else {
numberOfDays = 28;
}
break;
}
}
您的代码不可编译,因为您将字符串分配给布尔变量。这是行不通的。试试下面的代码
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int numberOfDays = 0;
System.out.print("What's the month? ");
String month = scan.nextLine();
System.out.print("Is it a leap year? ");
String leapYear = scan.nextLine();
boolean b1;
if (leapYear.equalsIgnoreCase( "Yes")) {
b1 = true;
}
else {
b1 = false;
}
switch(month) {
case "January":
numberOfDays = 31;
break;
case "February":
if (b1 == true) {
numberOfDays = 29;
} else {
numberOfDays = 28;
}
break;
}
}
编辑:在 Java 中,单 =
用于赋值,双 =
(==
) 用于相等性测试。因此,在之前的代码中,b = true
将 b1
的值重置为 true
,而不管您的 isLeapYear
问题设置的先前值如何。所以其他部分永远不会执行。