2016-04-05 15 views
0

私はすべてのコードを書いたが、何か不足している。特定の曜日を出力するために一緒に働く2つのクラスです。私は何か愚かな何かをしていることを知っている、助けを歓迎するJAVA:間違った返信を返す

基本的に、2つの出力が正しく、2が間違っています。間違っている二人は、前の日であり、翌日、代わりに正しい答えを得るための、私は、たとえば、Monday1またはTuesday6を取得しています:

このクラスを呼び出し
import java.util.*; 

public class DaysOfTheWeek 
{ 

static Scanner console = new Scanner(System.in); 

public static void main(String[] args) 
{ 

    String currentDayOfTheWeek; 
    String dayOfTheWeek; 

    int dayToFind; 

    System.out.println("Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday"); 
    System.out.print("Enter a day of the week: "); 

    currentDayOfTheWeek = console.nextLine(); 

    Day newDay = new Day(currentDayOfTheWeek); 

    newDay.printTheDay(); 

    dayOfTheWeek = newDay.getThePreviousDay(currentDayOfTheWeek); 

    System.out.println(); 
    System.out.print("The PREVIOUS day from '" + currentDayOfTheWeek + "' "); 
    System.out.print("is '" + dayOfTheWeek + "' \n"); 

    dayOfTheWeek = newDay.getTheNextDay(currentDayOfTheWeek); 

    System.out.println(); 
    System.out.print("The NEXT day from '" + currentDayOfTheWeek + "' "); 
    System.out.print("is '" + dayOfTheWeek + "' \n"); 

    System.out.println(); 
    System.out.println("How many days in the future from '" + currentDayOfTheWeek +"' \n"); 
    System.out.print("Do you want (0 - 31)?: "); 

    dayToFind = console.nextInt(); 

    if (validateDay(dayToFind) == true) 
    {  
    dayOfTheWeek = newDay.getTheFutureDay(currentDayOfTheWeek, dayToFind); 

    System.out.println(); 
    System.out.print(dayToFind + " days from '" + currentDayOfTheWeek + "' "); 
    System.out.print("is '" + dayOfTheWeek + "' \n");     
    } 
    else { 
    System.out.println(); 
    System.out.println("Invalid Day '" + dayToFind + "'. Entered day must be between 0 and 31"); 
    } 
} 

public static boolean validateDay(int dayToFind) 
{ 
    boolean validDay; 

    if ((dayToFind < 0) || (dayToFind > 31)) 
    validDay = false; 
    else 
    validDay = true; 

    return validDay; 
    } 
    public class day { 
    } 
    } 

public class Day 
{ 
private String[] daysArray = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"}; 
private String dayOfTheWeek; 

public Day() 
{ 
    dayOfTheWeek = ""; 
} 

public Day(String whichDay) 
{ 
    setTheDay(whichDay); 
} 

public void setTheDay(String whichDay) 
{ 
    dayOfTheWeek = whichDay; 
} 
public void printTheDay() 
{ 
    System.out.println(); 
    System.out.println("Day of the week entered is: " + dayOfTheWeek); 
} 

public String getTheFutureDay(String currentDayString, int futureDay) 
{  
    int todayArrayPos = -1; 

    for (int i = 0; i < daysArray.length; i++) 
    { 
     if (daysArray[i].equalsIgnoreCase(currentDayString)) 
     { 
     todayArrayPos = i; 
     break; 
     } 
    } 

    if (todayArrayPos == -1) 
    { 
     return "Invalid Day " + futureDay; 
    } 

    boolean bailOut = false; 

    int newFutureDay = 0; 
    int j = todayArrayPos; 

    while (newFutureDay != futureDay) 
    { 
    while (j < daysArray.length) 
    { 
     if (newFutureDay == futureDay) 
     { 
      bailOut = true; 
      break; 
     } 

     j += 1; 
     newFutureDay += 1; 
    } 

    if (bailOut == true) 
    { 
     break; 
    } 

    j = 0; 
    } 

    return daysArray[j];   
} 

public String getTheNextDay(String currentDayString) 
{ 

    String nextDayString = (dayOfTheWeek) + 1; 
return nextDayString; 
} 

public String getThePreviousDay(String currentDayString) 
{ 


    String previousDayString = (dayOfTheWeek) + 6; 
return previousDayString; 
} 
} 

どんな助けでも大歓迎です!事前に感謝

マーク

+0

もっと説明的な問題文を用意する必要があります。それは、あなたのコードが曜日を生成することを知っていますが、具体的に何が起きるのか、生成する日がわかりません。 – nhouser9

+0

基本的には、曜日を配列にロードします。ユーザに開始日の選択を要求し、入力された日、前日、翌日を返し、0〜31日の間に追加して適切な回答を返すように求めます。現在、配列を次の要素または6つの要素に移動するのではなく、前日および次の日を正しく戻さないX日を追加した後、正しい開始日と正しい日を返します。day1またはday6が戻されます。それが私が求めていることを理解するのに役立つのでしょうか? – markus242005

+0

はい、非常に役に立ちました。 – nhouser9

答えて

0

だからあなたの問題は、あなたがあなたの次の日の方法で文字列に1を追加することです。

public String getTheNextDay(String currentDayString) 
{ 
    String nextDayString = (dayOfTheWeek) + 1; 
    return nextDayString; 
} 

これは、文字列の連結をもたらすことが起こっている - このプログラムは、あなたがそれを尋ねると、「火曜日」を行うことをことを理解していない+ 1あなたはそれが「水曜日」言いたいこと。あなたの取得、将来の日の方法と同様の何かをする必要が

int todayArrayPos = -1; 
for (int i = 0; i < daysArray.length; i++) 
{ 
if (daysArray[i].equalsIgnoreCase(currentDayString)) 
{ 
    todayArrayPos = i; 
    break; 
} 
} 
int nextDayIndex = i + 1; 
//roll over to the first day of the week if the old day was the last day of the week 
if (nextDayIndex == daysArray.length) { 
nextDayIndex = 0; 
} 
return daysArray[nextDayIndex]; 

は同様にあなたの前の日のために似た何かを試してみてください。