2013-05-10 75 views
-2

只是一个简短的程序,可以确定用户输入的天数。我从星期六的第6天开始。有没有一种方法可以使用循环缩短代码?任何人都可以使用循环缩短这段代码吗?

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]); 
     } 
    } 
} 
+2

看看你的if语句。你能发现一种模式吗? – NilsH 2013-05-10 04:49:07

+0

@NilsH准确地说,在你的打印语句中做一些算术运算。 – squiguy 2013-05-10 04:49:41

+0

'int days [] = {1,2,3,4,5,6,7,8};'8天每周开始的时间是什么?我希望这意味着3天的周末..你可以有额外的一天后的星期天和称之为Funday。 :) – 2013-05-10 04:59:16

回答

1

可以使用switch案件不是多个if语句

switch(numdays) { 
    case 1: .... break; 
    case 2: ..... break; 
..... 
} 

String dayNames[] = {"Sunday", "Monday","Tuesday","Wednesday","Thursday", 
    "Friday","Saturday"}; 

,那么你可以指定索引直接

System.out.println(dayNames[numdays]); 
+0

这也工作,谢谢! – Cakes 2013-05-10 05:43:35

+0

欢迎您 – PSR 2013-05-10 05:44:25

0
for(numdays=0;numdays<=6;numdays++){ 
System.out.println(dayNames[(numdays + 6) % 7)]); 
} 
+0

非常感谢! – Cakes 2013-05-10 05:45:00

+0

最受欢迎.. !! – 2013-05-10 05:46:04

2

开始星期日:

String dayNames[] = {"Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday", 
      "Saturday"}; 

更换大的if/else与:

System.out.println(dayNames[numdays]); 
+0

这也是开始阵列与第一天的第一天的美德:) – 2013-05-10 04:53:22

+0

是的,这工作:D – Cakes 2013-05-10 05:42:39

3

以下部分:

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

这也工作,谢谢! – Cakes 2013-05-10 05:44:21

0

没有必要为一个循环

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

谢谢,这工作得很好:) – Cakes 2013-05-10 05:44:43

相关问题