2016-02-01 75 views
-1

我正在做一個任務,我必須創建一個需要做一系列事情的類。我已經找到了一切,其中大部分非常簡單,但我遇到了一個問題。其中一種方法應該是讓你將一天設置到你想要的一週中的任何一天。例如,程序從設置爲星期五的日子開始,我應該能夠輸入星期一,然後告訴它輸出,它應該輸出星期一。出於某種原因,它沒有更新一天,我無法弄清楚。有人看到我在這裏失蹤了嗎?用戶定義的類和方法

The purpose of this program is to create a class Day that will perform 
    multiple tasks regarding the day of the week. */ 

import java.util.*; 


public class DayProgram 
{ 
    static Scanner keyboard = new Scanner(System.in); 


    public static class Day 
    { 
     String[] weekDays = {"Sun" , "Mon", "Tues", "Weds", "Thurs", "Fri", "Sat"}; 

     int setDay = 0; 
     int returnDay = 0; 

     public Day(String today) 
     { 
     for (int i = 0; i < weekDays.length; i++) 
     { 
      if (today.equals(weekDays[i])) 
       { 
        setDay = i; 
        return; 
       } 
     } 
     System.out.println("That is not a valid day."); 
     } 

     public void printDay() 
     { 
     if (setDay <= weekDays.length) 
     { 
      System.out.println("Today is " + weekDays[setDay]); 
     } 
     else System.out.println("Day is not valid"); 
     } 

     public String setDay() 
     { 
     String newDay = keyboard.next(); 
     return newDay; 
     } 

     public String tomorrow() 
     { 
     return weekDays[(setDay + 1)%weekDays.length]; 
     } 

     public String yesterday() 
     { 
     return weekDays[(setDay - 1)%weekDays.length]; 
     } 

     public String findDay(int x) 
     { 
     return weekDays[(setDay + x)%weekDays.length]; 
     } 

     public String returnDay() 
     { 
     return weekDays[setDay]; 
     } 


    } 
    public static void main(String[] args) 
    { 
     Day day = new Day("Fri"); 

     day.printDay(); 

     System.out.println("Please change the day of the week."); 

     day.setDay(); 

     day.printDay(); 

     System.out.println(day.returnDay()); 

     System.out.println(day.tomorrow()); 

     System.out.println(day.yesterday()); 

     System.out.println("Please enter number of days and I will tell you what day of the week it will be."); 

     System.out.println(day.findDay(keyboard.nextInt())); 


    }   
} 
+0

'day = new Day(day.setDay());' – Shark

回答

1

setDay()不修改變量setDay。只需將
newDay = input.next()改爲setDay = input.next()即可對對象進行持久更改。

+0

但我需要使用用戶定義的方法。這是任務的真正意義。謝謝你! –

+0

@ethancodes,那麼你不得不直接訪問'setDay'作爲你的Day-Object的變量,或者用一個新的實例覆蓋整個Day-Object。除了直接變量訪問(無論出於何種原因)外,提供的Day類都被設計爲不可變的。這將是一個有用的信息在整體問題,請編輯它。 – Paul

+0

我對編程還很陌生。你的意思是不可變的? –

0
public String setDay() 
    { 
    String newDay = keyboard.next(); 
    return newDay; 
    } 

您初始化theh局部變量 'newDay',但不要把它分配給 'setDay'。

您將返回該newDay,但沒有人捕獲結果。

+0

好吧,我明白你在說什麼。我試圖用幾種不同的方式解決它,但似乎無法得到它。由於白天是Day類型,我似乎無法弄清楚如何改變它。 –

0

更改爲:

System.out.println("Please change the day of the week."); 

day.setDay(); 

day.printDay(); 

day.setDay(); 

要:

day.Day(day.setDay()); 

我不知道你是否可以把這個day.setDay功能到這一點。如果它不起作用,只需使用一個額外的變量。

順便說一下,我不確定這是否正確,我只是用你的東西來學習這個用戶定義的方法/類的東西。

相關問題