2016-11-16 4 views
0

Я пытаюсь сделать программу, которая получает день с пользовательского ввода, а затем сообщает им день до и послезавтра. Пользователь также должен иметь возможность вводить количество дней для добавления и программу должен вывести этот день.Дни недели

пример пользователь вводит 1 = понедельник, завтра = 2 вчера вторник был = 3 воскресенье

если пользователь говорит его понедельник (1) и добавляет 12 дней выход должен быть суббота (6)

проблема всякий раз, когда «theWeekDay» больше 7, он ничего не выводит, потому что TheDay(); не имеет условия для чего-то большего 7. Пожалуйста, помогите мне!

Спасибо вам большое!

import java.util.Scanner; 
import java.util.Scanner; 

public class Problem_3 { 

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

     int theWeekDay; 
     System.out.println("What Day Is It?"); 
     theWeekDay = input.nextInt(); 
     Days one = new Days(theWeekDay); 
     System.out.println("Today It Is: "); 
     one.TheDay(theWeekDay); 
     System.out.println("Yesterday It Was: "); 
     one.PreviousDay(theWeekDay); 
     System.out.println("Tomorrow It Is: "); 
     one.NextDay(theWeekDay); 
     System.out.println("How Many Days To Add?"); 
     int x = input.nextInt(); 
     System.out.println("Now It Is: "); 
     one.AddedDays(x); 
    } 
} 

class Days { 
    private int theWeekDay; 

    public Days(int theWeekDay) { 
     this.theWeekDay = theWeekDay; 
    } 

    public int getTheWeekDay() { 
     return theWeekDay; 
    } 

    public void setTheWeekDay(int theWeekDay) { 
     this.theWeekDay = theWeekDay; 
    } 

    public int TheDay(int theWeekDay) { 
     // an arra days of week + then add days in it 
     if (theWeekDay == 0) { 
      theWeekDay = theWeekDay + 7; 
     } 

     if (theWeekDay == 1) { 
      System.out.println("Monday"); 
     } else if (theWeekDay == 2) { 
      System.out.println("Tuesday"); 
     } else if (theWeekDay == 3) { 
      System.out.println("Wednsday"); 
     } else if (theWeekDay == 4) { 
      System.out.println("Thursday"); 
     } else if (theWeekDay == 5) { 
      System.out.println("Friday"); 
     } else if (theWeekDay == 6) { 
      System.out.println("Saturday"); 
     } else if (theWeekDay == 7) { 
      System.out.println("Sunday"); 
     } 
     return theWeekDay; 
    } 

    public int PreviousDay(int theWeekDay) { 
     theWeekDay = theWeekDay - 1; 
     return TheDay(theWeekDay); 
    } 

    public int NextDay(int theWeekDay) { 
     theWeekDay = theWeekDay + 1; 
     if (theWeekDay > 7) { 
      theWeekDay = 1; 
     } 
     return TheDay(theWeekDay); 
    } 

    public int AddedDays(int AddedDays) { 
     getTheWeekDay(); 
     theWeekDay = theWeekDay + AddedDays; 
     return TheDay(theWeekDay); 
    } 
} 
+2

Что вы хотите, если 'theWeekDay'> 7? –

+0

, когда кто-то вводит 12, как ваша функция должна знать, в какой день она должна начинаться? –

ответ

0

Если вы хотите взять на себя значение больше что 7 как действительный, вы обязательно должны использовать операцию modulo. Что-то вроде этого:

В противном случае вы должны бросить и исключить.

+0

У меня была такая же мысль, но я поместил ее в AddDays(), я просто поместил ее в TheDay(); после моего: if (theWeekDay == 0) {}, и он работает – OneU

0

ваш, если еще должна охватывать все случаи ....

добавьте еще после

else if(theWeekDay == 7){ 
     System.out.println("Sunday"); 
    } 

что-то вроде:

if(theWeekDay == 1){ 
    System.out.println("Monday"); 
}else if(theWeekDay == 2){ 
    System.out.println("Tuesday"); 
}else if(theWeekDay == 3){ 
    System.out.println("Wednsday"); 
}else if(theWeekDay == 4){ 
    System.out.println("Thursday"); 
}else if(theWeekDay == 5){ 
    System.out.println("Friday"); 
}else if(theWeekDay == 6){ 
    System.out.println("Saturday"); 
}else if(theWeekDay == 7){ 
    System.out.println("Sunday"); 
}else{ 
    System.out.println("Invalid input"); 
} 
return theWeekDay; 
0

Как пользователь629735 сказал, используйте modulo в своей формуле.

public int AddedDays(int AddedDays) { 
    getTheWeekDay(); 
    theWeekDay = (theWeekDay + AddedDays) % 7; 
    return TheDay(theWeekDay); 
} 
+0

Так что в основном это устраняет условия из TheDay(); и хранит его в AddDays() ;. Я пробовал ваш новый код и, очевидно, он работает, но вы бы сказали, что это лучше или просто еще один вариант? – OneU

+0

Вы правы, условие уже установлено в TheDay(). Но не лучше ли устанавливать условия вне TheDay(), чтобы, когда пользователи ставили 0 в начале программы, это не показывает ему «воскресенье»? – Davezedave

+0

ничего себе, ты гений! Даже не заметил, что – OneU

Смежные вопросы