Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 有人能用循环把代码缩短吗?_Java_Loops_Weekday - Fatal编程技术网

Java 有人能用循环把代码缩短吗?

Java 有人能用循环把代码缩短吗?,java,loops,weekday,Java,Loops,Weekday,这只是一个简短的程序,可以计算出用户输入的天数中的哪一天。我从第六天开始,也就是星期六。有没有办法使用循环缩短代码 import java.util.Scanner; class Week{ public static void main(String args[]){ Scanner input = new Scanner(System.in); int days[] = {1,2,3,4,5,6,7,8}; String dayNa

这只是一个简短的程序,可以计算出用户输入的天数中的哪一天。我从第六天开始,也就是星期六。有没有办法使用循环缩短代码

import java.util.Scanner;

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

        int days[] = {1,2,3,4,5,6,7,8};
        String dayNames[] = {"Monday","Tuesday","Wednesday","Thursday","Friday",
                "Saturday", "Sunday"};
        int numdays;

        System.out.println("Enter how many days from now: ");
        numdays = input.nextInt();

        numdays = (6 + numdays) % 7;

        if(numdays == 0){
            System.out.println(dayNames[6]);
        }
        else if(numdays == 1 ){
            System.out.println(dayNames[0]);
        }
        else if(numdays == 2){
            System.out.println(dayNames[1]);
        }
        else if(numdays == 3){
            System.out.println(dayNames[2]);
        }
        else if(numdays == 4){
            System.out.println(dayNames[3]);
        }
        else if(numdays == 5){
            System.out.println(dayNames[4]);
        }
        else if(numdays == 6){
            System.out.println(dayNames[5]);
        }
    }
}

您可以使用
switch
case而不是多个if语句

然后可以直接指定索引

System.out.println(dayNames[numdays]);
for(numdays=0;numdays从星期日开始:

String dayNames[] = {"Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday",
            "Saturday"};
将大if/else替换为:

System.out.println(dayNames[numdays]);
以下部分:

if(numdays == 0){
    System.out.println(dayNames[6]);
}
else if(numdays == 1 ){
    System.out.println(dayNames[0]);
}
else if(numdays == 2){
    System.out.println(dayNames[1]);
}
else if(numdays == 3){
    System.out.println(dayNames[2]);
}
else if(numdays == 4){
    System.out.println(dayNames[3]);
}
else if(numdays == 5){
    System.out.println(dayNames[4]);
}
else if(numdays == 6){
    System.out.println(dayNames[5]);
}
…被以下内容取代:

System.out.println(dayNames[(numdays + 6) % 7)]);

不需要循环

String dayNames[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
                "Sunday" };
int i  = (5 + numdays) % 7;
System.out.println(dayNames[i]);

看看你的if语句。你能找出一个模式吗?@NilsH确切地说,在你的打印语句中做一些算术。
int days[]={1,2,3,4,5,6,7,8};
8天工作周是什么时候开始的?我希望这意味着3天的周末。
int days[]={1,2,3,4,5,6,7,8};
感谢大家的帮助:)这还有从一周的第一天开始阵列的优点:)
if(numdays == 0){
    System.out.println(dayNames[6]);
}
else if(numdays == 1 ){
    System.out.println(dayNames[0]);
}
else if(numdays == 2){
    System.out.println(dayNames[1]);
}
else if(numdays == 3){
    System.out.println(dayNames[2]);
}
else if(numdays == 4){
    System.out.println(dayNames[3]);
}
else if(numdays == 5){
    System.out.println(dayNames[4]);
}
else if(numdays == 6){
    System.out.println(dayNames[5]);
}
System.out.println(dayNames[(numdays + 6) % 7)]);
String dayNames[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
                "Sunday" };
int i  = (5 + numdays) % 7;
System.out.println(dayNames[i]);