Java 将整数切换为字符串
我想把系统打印在同一行上。我希望将案例设置为天(案例0:“Sunday”),这样我就可以编写System.out.println(“今天是“+day+”,未来的一天是“+m1”),但当我尝试此操作时,我得到的是案例编号而不是字符串(今天是0,未来的一天是0)。我认为有一种更好的方式来编写逻辑,与我的方式相比:Java 将整数切换为字符串,java,Java,我想把系统打印在同一行上。我希望将案例设置为天(案例0:“Sunday”),这样我就可以编写System.out.println(“今天是“+day+”,未来的一天是“+m1”),但当我尝试此操作时,我得到的是案例编号而不是字符串(今天是0,未来的一天是0)。我认为有一种更好的方式来编写逻辑,与我的方式相比: import java.util.*; public class HomeWork3 { public static void main(String[] args) {
import java.util.*;
public class HomeWork3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Sun = 0, Mon = 1, Tue = 2, Wed = 3, Thurs = 4, Fri = 5, Sat = 6 ");
System.out.print("\nEnter today's number: ");
int day = input.nextInt();
System.out.print("Enter the number of days that elapsed since today: ");
int n1 = input.nextInt();
//String strD = Integer.toString(day);
switch (day){
case 0: System.out.println("Today is Sunday");
break;
case 1: System.out.println("Today is Monday");
break;
case 2: System.out.println("Today is Tuesday");
break;
case 3: System.out.println("Today is Wednesday");
break;
case 4: System.out.println("Today is Thursday");
break;
case 5: System.out.println("Today is Friday");
break;
case 6: System.out.println("Today is Saturday");
break;
}
int m1 = ((day + n1)% 7);
switch (m1){
case 0: System.out.println("The future day is Sunday");
break;
case 1: System.out.println("The future day is Monday");
break;
case 2: System.out.println("The future day is Tuesday");
break;
case 3: System.out.println("The future day is Wednesday");
break;
case 4: System.out.println("The future day is Thursday");
break;
case 5: System.out.println("The future day is Friday");
break;
case 6: System.out.println("The future day is Saturday");
break;
}
//String strD = Integer.toString(day);
//System.out.println(strD + " this might work " + n1);
}
}
输出:
太阳=0,周一=1,周二=2,周三=3,周四=4,周五=5,周六=6
输入今天的数字:2
输入从今天起经过的天数:5
今天是星期二
未来的一天是星期天简单地使用内置枚举如何: 输出:
Today is Thursday
但是如果你想使用switch语句,我会说,添加一层抽象,以简化你需要解决的问题。e、 g.创建一个方法,该方法接受和
int
,并将一周中的某一天作为字符串返回:
public static String getWeekDay(int dayNumber) {
switch(dayNumber) {
case 0: return "Sunday";
case 1: return "Monday";
case 2: return "Tuesday";
...
}
throw new IllegalArguemntException("Invalid day number: " + dayNumber);
}
并使用它创建输出:
System.out.println("Today is " + getWeekDay(day));
那么以下内容如何:
String[] days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
int m1 = ((day + n1)% 7);
String output = String.format("Today is %s, the future day is %s", days[day], days[m1]);
System.out.println(output);
(显然,您需要确保day,因为您需要将int和String关联起来,这样您就可以使用map了
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//add all days into the map with their key (number)
HashMap<Integer, String> map = new HashMap<Integer, String>();
map.put(0, "Sunday");
map.put(1, "Monday");
map.put(2, "Tuesday");
map.put(3, "Wednesday");
map.put(4, "Thursday");
map.put(5, "Friday");
map.put(6, "Saturday");
//Printing all days
for(int key : map.keySet()){
System.out.print(key+"="+map.get(key)+", ");
}
System.out.print("\nEnter today's number: ");
int day = input.nextInt();
System.out.print("Enter the number of days that elapsed since today: ");
int n1 = input.nextInt();
n1 = ((day + n1)% 7);
System.out.println("Today is "+map.get(day) + ", the future day is " + map.get(n1));
}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(System.in);
//使用其键(数字)将所有日期添加到地图中
HashMap=newHashMap();
地图放置(0,“星期日”);
地图放置(1,“星期一”);
地图放置(2,“星期二”);
地图放置(3,“星期三”);
地图放置(4,“星期四”);
地图放置(5,“星期五”);
地图放置(6,“星期六”);
//全天印刷
for(int键:map.keySet()){
系统输出打印(key+“=”+map.get(key)+“,”);
}
System.out.print(“\n输入今天的号码:”);
int day=input.nextInt();
System.out.print(“输入从今天起经过的天数:”);
int n1=input.nextInt();
n1=((天+n1)%7);
System.out.println(“今天是“+map.get(day)+”,未来的一天是“+map.get(n1));
}
它允许您返回与扫描仪输入的键对应的值。最简单的方法是将第一个开关中的println()
块更改为print()
,并为文本添加空格
第二个版本是定义两个字符串并设置开关
-块中的值:
String today;
switch (day){
case 0: today = "Sunday";
break;
等等,还有
String futureday;
switch (m1){
case 0: futureday = "Sunday";
break;
依此类推。最后您得到了所需的输出:
System.out.println("Today is "+ today + " and the future day is " + futureday);
但最优雅的方法是定义一组工作日:
String[] days = {"Sunday","Monday","Tuesday"};
因此,您可以删除您的开关
-块,只需编写:
System.out.println("Today is "+ days[day] + " and the future day is " + days[m1]);
提示:您必须初始化日
和未来日
。您应该检查日
是否<7,以防止出现索引自动边界异常。“输出”表示“需要输出”?声明为字符串String currentDay
和String futureDay
。在您的情况下,不要直接打印,而是将这两个字符串设置为正确的值,并在和System.out.Println(“今天是“+currentDay+”。未来的一天是“+futureDay”)
你想知道为什么如果你打印day
你会得到一个整数,但是你得到的却是int day=input.nextInt();
。因此建议你理解你的代码。如果你不想在最后打印它,使用开关将一个值设置为字符串dayText
(保留你的代码)你可能想使用数组“OUTPUT”意思是这就是我从逻辑中得到的。@AxelH Meh,谷歌搜索“java int to week day”得到的是DayOfWeek
doc at#1。他自己可能已经到了那里。有些人只是喜欢问别人,而不是谷歌。我搜索了第一个。我在尝试了我找到的所有东西后在这里问了这个问题。所以,我不接受这个问题“有些人只是喜欢问”个人问题,但其他人可能会问。与试图学习的人打交道时需要软技能。@Drolltv65查看我的更新。顺便说一句,我不是在判断,问别人也很好。为什么不String[]days={“星期日”…“星期六”};
?这样做更容易case@AxelH你也可以,但我太习惯于映射了,所以我的第一个想法就是:D bu是的,当键是整数时,从0开始,数组更好,但它允许显示不同的可能性,就像这样,但我正试图让它与switch命令一起工作。
System.out.println("Today is "+ days[day] + " and the future day is " + days[m1]);