Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java(使用if-else语句查找未来日期)_Java_If Statement - Fatal编程技术网

Java(使用if-else语句查找未来日期)

Java(使用if-else语句查找未来日期),java,if-statement,Java,If Statement,我有个问题想不通,谢谢你: 编写一个程序,提示用户输入一周中今天的整数(星期日为0,星期一为1,…星期六为6)。还提示用户输入未来日期的后天数,并显示一周的未来日期。以下是运行示例: 输入今天:1 输入从今天起经过的天数:3 今天是星期一,明天是星期四 我的尝试是: Scanner input = new Scanner(System.in); System.out.print("Enter today's day (0 - 6): "); int day = input.nextInt()

我有个问题想不通,谢谢你: 编写一个程序,提示用户输入一周中今天的整数(星期日为0,星期一为1,…星期六为6)。还提示用户输入未来日期的后天数,并显示一周的未来日期。以下是运行示例: 输入今天:1 输入从今天起经过的天数:3 今天是星期一,明天是星期四 我的尝试是:

Scanner input = new Scanner(System.in);

System.out.print("Enter today's day (0 - 6):  ");
int day = input.nextInt();

System.out.print("Enter the number of days elapsed since today:  ");
int elapsed = input.nextInt();

if(day == 0)
{
    System.out.println("Sunday");
}
if(day   == 1)
{
    System.out.println("Monday");
}
if(day ==  2)
{
    System.out.println("Tuesday");
}
if(day  == 3)
{
    System.out.println("Wednesday");
}
if(day  ==  4)
{
    System.out.print("Thursday");
}
if(day ==  5)
{
    System.out.print("Friday");
}
if(day  == 6)
{
    System.out.print("Saturday");
}

System.out.print("Today is " + day + " and the future day is " + elapsed);

通过使用数组来存储日期名称,您可以做得更好

String[] dayNames = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
现在您可以使用用户输入作为索引

int nameIndex = //... get input
//validate input
//dayNames[nameIndex] is the day of the week
现在获取要添加的天数的输入

int numDays = //...get input
然后再加上那么多天来计算未来一周中某一天的指数

int futureNameIndex = nameIndex; //start with entered day of week index
for(int i=0; i<numDays; i++) {
    futureNameIndex++; //increment by 1 for numDays times
    if(futureNameIndex == dayNames.length) { //if the index reaches lenght of the array
        futureNameIndex = 0;                 //reset it to 0
    }
}

由于需要两次day number to day字符串,请将其放在单独的函数中。我想向你们展示几种可能的方法。版本1,基本、简单、整洁:

// isolate the daynumber --> daystring in a function, that's tidier
String dayFor (int daynumber) {
    String dayAsString = "ERROR";  // the default return value
    switch(dayNumber) {
        case 0 :
            dayAsString = "Sunday";
            break;
        case 1 :
            dayAsString = "Monday";
            break;
        // and so on, until
        case 6 :
            dayAsString = "Saturday";
            break;
     }
     return dayAsString;
}
使用数组而不是switch语句的更短版本:

String dayFor (int daynumber) {
    String dayStrings[] = new String[]{"Sunday","Monday", .... "Saturday"};
    // notice that daynumber's modulo is used here, to avoid index out of
    // bound errors caused by erroneous daynumbers:
    return dayStrings[daynumber % 7];
}
尝试以下函数的方法可能很有诱惑力,其中每个案例都会立即返回,但不鼓励使用多个return语句。只是在这里展示它,因为它在技术上是可能的,有时你会遇到它

String dayFor (int daynumber) {
    switch(dayNumber) {
        case 0 :
            return "Sunday";
        case 1 :
            return "Monday";

        // and so on, until

        case 6 :
            return "Saturday";
     }
     // normally not reached but you need it because the compiler will
     // complain otherwise anyways.
     return "ERROR";
}
在这相当长的介绍之后,主要功能变得简短。输入后,您只需要:

// present day + elapsed modulo 7 = the future day
int future = (day + elapsed) % 7;
System.out.print("Today is " + dayFor(day) + " and the future day is " + dayFor(future) );

别忘了添加代码来检查输入

该问题给出的天数范围为0-6天,而不是1-7天(常规)。现在,例如,如果今天是1(星期一),并且从今天开始的日期是3,那么这一天应该是星期四。由于此问题的起始日期包括在内,因此产生的日期将在1(星期一)、2、3(星期三)之后,即星期四

让我们举一个例子,并将其应用于下面的代码

日=1

daysElased=3

否则,如果(天>0&&天<7),情况如何

{

sum=1(天)+3(天选择);//sum=4

}

如果总和在0-6范围内,则可以根据每天创建每个If案例。在上述情况下,总和小于6,因此它将有自己的if子句。如果总和更大,例如,天=1和daysElapsed=6,那么总和=1(天)+6(daysElapsed)=7

在这种情况下,它将匹配子句if(sum>6),然后sum=sum%7=7%7=0=Sunday。这意味着从1(星期一)到6(星期六)的日期已经过去,因此这一天将是星期日(0)

if(day==0)//如果输入的当前日期为零(0表示星期日)
{
sum=daysElapsed;//用户将输入daysElapsed
}
else if(天>0&&day<7)//如果当前天>0但<7(1-6天)
{
总和=天+天选择的天数;//
}

if(sum>6)//if 0据我所知,这个问题来自《Java编程入门》一书。当你问这个问题时,你对方法、循环、数组等没有任何知识,所以我只使用选择

在这里,当我试图用更好的方法求解时,我找不到任何方法,因为我们不能使用非常有用的数组或更好的方法。这就是为什么这个问题在书中有点多余

您真的不应该使用if语句,因为在这种情况下switch更好

    System.out.println("Enter today's number (0 for Sunday, 1 for Monday...) :");
    int todayNo = in.nextInt();

    System.out.println("Enter the number of days elapsed since today:");
    int elapsedDay = in.nextInt();

    int futureDay = (todayNo + elapsedDay) % 7;

    switch (todayNo) {
        case 0:
            System.out.print("Today is Sunday and");
            break;
        case 1:
            System.out.print("Today is Monday and");
            break;
        case 2:
            System.out.print("Today is Tuesday and");
            break;
        case 3:
            System.out.print("Today is Wednesday and");
            break;
        case 4:
            System.out.print("Today is Thursday and");
            break;
        case 5:
            System.out.print("Today is Friday and");
            break;
        case 6:
            System.out.print("Today is Saturday and");
            break;

    }

    switch (futureDay) {
        case 0:
            System.out.print(" the future day is Sunday.");
            break;
        case 1:
            System.out.print(" the future day is Monday.");
            break;
        case 2:
            System.out.print(" the future day is Tuesday.");
            break;
        case 3:
            System.out.print(" the future day is Wednesday.");
            break;
        case 4:
            System.out.print(" the future day is Thursday.");
            break;
        case 5:
            System.out.print(" the future day is Friday.");
            break;
        case 6:
            System.out.print(" the future day is Saturday.");
            break;

    }

在这里,您可能唯一不知道的是System.out.print();。与System.out.println()的唯一区别;用这种方法,它不会打印在新行上,而是打印在同一行上,这就是我们需要的。修改它以更好地理解。

这个问题来自Y.Daniel Liang的《Java编程入门》一书。除了使用字符串类型之外,我相信这将在下一章中介绍;我为本练习编写的解决方案只使用了到目前为止所教的内容

package javaapplication2;

import java.util.Scanner;
public class JavaApplication2 {


    public static void main(String[] args) {

    int day, eday, fday;
        String str, str1;
        Scanner S = new Scanner(System.in);
        System.out.println("Enter today's day: ");
        day = S.nextInt();
        System.out.println("Enter the number of days elapsed since today: ");
        eday = S.nextInt();
        if (day == 0) {
            str = "Sunday";
            System.out.print("Today is " +str + " and ");
        }
        else if (day == 1) {
            str = "Monday";
            System.out.print("Today is " +str + " and ");
        }
        else if (day == 2) {
            str = "Tuesday";
            System.out.print("Today is " +str + " and ");
        }
        else if (day == 3) {
            str = "Wednesday";
            System.out.print("Today is " +str + " and ");
        }
        else if (day == 4) {
            str = "Thursday";
            System.out.print("Today is " +str + " and ");
        }
        else if (day == 5) {
            str = "Friday";
            System.out.print("Today is " +str + " and ");
        }
        else if (day == 6) {
            str = "Saturday";
            System.out.print("Today is " +str + " and ");
        }

       fday = day + eday;

       if (fday % 7 == 0) {
            str1 = "Sunday";
            System.out.print("Future day is " +str1);
        }
        else if (fday % 7 == 1) {
            str1 = "Monday";
            System.out.print("Future day is " +str1);
        }
        else if (fday % 7 == 2) {
            str1 = "Tuesday";
            System.out.print("Future day is " +str1);
        }
        else if (fday % 7 == 3) {
            str1 = "Wednesday";
            System.out.print("Future day is " +str1);
        }
        else if (fday % 7 == 4) {
            str1 = "Thursday";
            System.out.print("Future day is " +str1);
        }
        else if (fday % 7 == 5) {
            str1 = "Friday";
            System.out.print("Future day is " +str1);
        }
        else if (fday % 7 == 6) {
            str1 = "Saturday";
            System.out.print("Future day is " +str1);
        }

    }
import java.util.Scanner;

public class Exercise_03_06 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.print("Enter today's day: ");
        int todaysDay = input.nextInt();

        System.out.print("Enter the number of days elapsed since today: ");
        int elapsedDays = input.nextInt();

        int futureDay = (todaysDay + elapsedDays) % 7;
        String day_of_week = "";

        switch (todaysDay) {
            case 0: day_of_week = "Sunday"; break;
            case 1: day_of_week = "Monday"; break;
            case 2: day_of_week = "Tuesday"; break;
            case 3: day_of_week = "Wednesday"; break;
            case 4: day_of_week = "Thursday"; break;
            case 5: day_of_week = "Friday"; break;
            case 6: day_of_week = "Saturday";
        }

        switch (futureDay) {
            case 0:
                System.out.println("Today is " + day_of_week + " and the future day is Sunday."); break;
            case 1:
                System.out.println("Today is " + day_of_week + " and the future day is Monday."); break;
            case 2:
                System.out.println("Today is " + day_of_week + " and the future day is Tuesday."); break;
            case 3:
                System.out.println("Today is " + day_of_week + " and the future day is Wednesday."); break;
            case 4:
                System.out.println("Today is " + day_of_week + " and the future day is Thursday."); break;
            case 5:
                System.out.println("Today is " + day_of_week + " and the future day is Friday."); break;
            case 6:
                System.out.println("Today is " + day_of_week + " and the future day is Saturday.");
        }
    }
}
输出:

Enter today's day: 0
Enter the number of days elapsed since today: 31
Today is Sunday and the future day is Wednesday.
注意事项:

Enter today's day: 0
Enter the number of days elapsed since today: 31
Today is Sunday and the future day is Wednesday.
  • 第一个switch语句为变量day_of_week指定一个字符串类型的day,该变量稍后用于打印“今天”

  • 要获得未来的一天,您必须找到今天和经过的天数之和除以7的剩余部分

  • 最后一个switch语句“匹配”一个案例编号,该编号与存储在futureDay变量中的编号相同(通过执行上述数学运算获得)


if(day==0)System.out.println(“星期日”);如果(天==1)System.out.println(“星期一”);如果(天==2)System.out.println(“星期二”);如果(天==3)System.out.println(“星期三”);如果(天==4)系统输出打印(“星期四”);如果(天==5)系统输出打印(“星期五”);如果(天==6)系统输出打印(“星期六”);我认为是第%7天,但我在哪里可以使用它来编辑你的问题。如果用户在周一运行应用程序并输入其他内容(例如周五),该怎么办?@fvu:你说得对。我在你的评论中看到了这一点,所以刚刚添加了另一种(我想是天真的)方法,这肯定比你建议的
%
操作要详细得多。同意。如果你能为你的答案和逻辑提供一些解释,而不仅仅是简单的解释,那就太好了code@hawk:这些评论很有帮助。你能详细说明一下这是如何回答这个问题的吗?
Enter today's day: 0
Enter the number of days elapsed since today: 31
Today is Sunday and the future day is Wednesday.