2016-02-01 3 views
-1

Я выполняю задание, где мне нужно создать класс Day, который должен выполнить ряд вещей. Я все понял, большинство из них довольно просто, но у меня есть одна проблема. Один из методов должен позволить вам установить день в любой день недели, который вы хотите. Например, программа начинается с дня, установленного на Fri, и я должен иметь возможность ввести Mon, а затем сообщить об этом на выходе, и он должен вывести Mon. По какой-то причине он не обновляет день, и я не могу понять это. Кто-нибудь видит, что мне здесь не хватает?Определенные пользователем классы и методы

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(); 

To:

day.Day(day.setDay()); 

Я не знаю, если вы можете установить эту функцию day.setDay в этом. Если он не работает, просто используйте дополнительную переменную.

Кстати, я не уверен, что это правильно. Я просто использовал вашу вещь, чтобы изучить этот пользовательский метод/класс для себя.

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