java - 如何像输入int一样使用字符串?
问题描述
import java.util.Scanner;
public class DaysInMonth
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter a year:")
int year = input.nextInt(); enter code here
System.out.print("Enter a month:");
int month = input.nextInt(); enter code here
int days = 0;
boolean isLeapYear = (year % 4 == 0 && year % 100 != 0)||(year % 400 == 0);
switch (month){
case 1:
days = 31;
break;
case 2:
if (isLeapYear)
days = 29;
else
days = 28;
break;
case 3:
days = 31;
break;
case 4:
days = 30;
break;
case 5:
days = 31;
break;
case 6:
days = 30;
break;
case 7:
days = 31;
break;
case 8
days = 31;
break;
case 9:
days = 30;
break;
case 10:
days = 31;
break;
case 11:
days = 30;
break;
case 12:
days = 31;
break;
default:
String response = "Have a Look at what you've done and try again";
System.out.println(response);
System.exit(0);
}
String response = "There are " +days+ " Days in Month "+month+ " of Year " +year+ ".\n";
System.out.println(response); // new line to show the result to the screen.
}
}
如果我输入 1,为什么我不能在一月份输入以获得相同的输出结果?它应该打印“2018 年 1 月有 31 天”我初始化了这个月份,所以它应该是 1 月或任何其他月份。
我知道我有 int 但我想知道如何也使用 January for 1 来获得相同的输出。
解决方案
您可以在 switch 语句中使用字符串来检查几种等效情况:
switch (monthInput.toLowerCase()) {
case "january":
case "jan":
case "1":
days = 31;
break;
case "february":
case "feb":
case "2":
days = isLeapYear ? 29 : 28;
break;
case "march":
case "mar":
case "3":
days = 31;
break;
// etc.
default:
System.out.println(monthInput + " is not a valid month");
input.close();
System.exit(0);
}
但这意味着您必须将输入读取为String
,而不是int
...
Scanner input = new Scanner(System.in);
System.out.print("Enter a year:");
int year = input.nextInt(); // enter code here
input.nextLine(); // read the rest of the line (if any)
System.out.print("Enter a month:");
String monthInput = input.nextLine();
注意使用input.nextLine();
after .nextInt()
- 这是因为nextInt()
调用不会消耗所有输入,它只读取您为 Year 键入的 int,它不读取换行符(回车键),因此您必须将其读取到准备好阅读下一个输入,即月份编号或名称。
推荐阅读
- python - 通过分配特定名称传递python中的每个excel文件
- sql - 如何对字母数字列求和
- regex - 如何修复bash脚本以在另一个文件中查找正则表达式?
- c# - 如何在 C# 中没有字体格式的情况下在 SQL Server 中存储和读取数据?
- python - 在新线程中运行 cryptofeed(asyncio 库)
- ros - 是否可以在运行时停止或重新启动 ros 节点?
- django - 使用 pandas 将数据加载到 Django SQLite 中导致异常值:外键不匹配
- django - 如何使用相同的值但使用现有字段之一的不同数据类型来注释 Django Queryset?
- flutter - 如何使用 youtube_player_flutter 包在 Flutter 中播放全屏 youtube 视频?
- node.js - 如何在客户端使用“要求”?