Java 将整数切换为字符串

Java 将整数切换为字符串,java,Java,我想把系统打印在同一行上。我希望将案例设置为天(案例0:“Sunday”),这样我就可以编写System.out.println(“今天是“+day+”,未来的一天是“+m1”),但当我尝试此操作时,我得到的是案例编号而不是字符串(今天是0,未来的一天是0)。我认为有一种更好的方式来编写逻辑,与我的方式相比: import java.util.*; public class HomeWork3 { public static void main(String[] args) {

我想把系统打印在同一行上。我希望将案例设置为天(案例0:“Sunday”),这样我就可以编写System.out.println(“今天是“+day+”,未来的一天是“+m1”),但当我尝试此操作时,我得到的是案例编号而不是字符串(今天是0,未来的一天是0)。我认为有一种更好的方式来编写逻辑,与我的方式相比:

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]);