2016-05-03 14 views
1

Ich bin neu in Java und es zu lernen. Ich bin auf diese Frage gestoßen, die ich versuche zu verstehen.Wie schreibe ich eine Java-Klasse, die numerische Benutzer eingegebenen Daten als Tage der Woche

Wie kann ich eine Java-Klasse schreiben, die zwei Felder haben, die die folgenden Informationen festhalten:

  • Zimmernummer (A String)
  • MeetDays (A String)

Die MeetDays hält Sonntag Tag 1 sein. Ein Benutzer sollte die Tag-Nummer für jeden Tag eingeben, an dem die Klasse zusammentrifft.

Beispiel: Wenn die Klassen Di und Do gehalten werden, wird der Benutzer 35 eingeben. Wenn der Benutzer einen ungültigen Zahlenbereich wie '11' oder '233' usw. eingibt, wird eine Ausnahme ausgelöst.

Ich denke, hier eine Switch-Anweisung zu tun, aber ich bin nur unsicher, wie es weiter geht. Ich denke, das ist eine einfache Frage für einen erfahrenen Java-Entwickler. Jede Hilfe oder Unterstützung wäre sehr willkommen.

Edit:

public class SectionNumber { 

    private String roomNumber; 
    private String meetDays; 

    public SectionNumber() {} 

    public SectionNumber(String roomNumber, String meetDays) { 
     this.roomNumber = roomNumber; 
     this.meetDays = meetDays; 
    } 

    public String getRoomNumber() { 
     return roomNumber; 
    } 

    public void setRoomNumber(String roomNumber) { 
     this.roomNumber = roomNumber; 
    } 

    public String getMeetDays() { 
     return meetDays; 
    } 

    public void setMeetDays(String meetDays) { 
     this.meetDays = meetDays; 
    } 


    // not sure how to proceed here 
    public void classMeetDays(String userInput) { 

     switch (meetDays) { 
     case userInput: 

      break; 

     default: 
      break; 
     } 
    } 
} 
+2

Haben Sie versucht, einen Code zu schreiben, um diese Klasse zu erstellen? Hast du dein Lehrbuch und/oder Tutorial angeschaut, um die Struktur einer solchen Klasse zu bestimmen? Um Ihres Lernens willen wäre es viel vorteilhafter, Ihnen Code zur Verfügung zu stellen. – hexafraction

+1

Es gibt 7 Tage in der Woche (ich hoffe, Sie wissen das), und der erste Tag ist Sonntag, nummeriert 1, so sind alle Wochentage 1-7. Eine Zeichenfolge, die Wochentage darstellt, z. "35" ist 3 = Dienstag, 5 = Donnerstag, bedeutet, dass die Ziffern alle 1-7 sein müssen, und steigend, z. "53" und "38" wären beide falsch. – Andreas

+0

Welches Format hat der meetDays String? –

Antwort

0
import java.util.ArrayList; 
import java.util.List; 

public class Main { 

    public static void main(String[] args) { 

     List<String> dayList = new ArrayList<String>(); 

     int userInputNumber = 1234567; 

     String userInputAsString = String.valueOf(userInputNumber); 


     for (int i = 0; i < userInputAsString.length(); i++) { 
      char dayAsNumericChar = userInputAsString.charAt(i); 

      String day; 
      switch (dayAsNumericChar) { 
      case '1': 
       day = "Sunday"; 
       break; 
      case '2': 
       day = "Monday"; 
       break; 
      case '3': 
       day = "Tuesday"; 
       break; 
      case '4': 
       day = "Wednesday"; 
       break; 
      case '5': 
       day = "Thursday"; 
       break; 
      case '6': 
       day = "Friday"; 
       break; 
      case '7': 
       day = "Saturday"; 
       break; 
      default: 
       throw new RuntimeException("Invalide number: " + dayAsNumericChar); 
      } 
      if (dayList.contains(day)) { 
       throw new RuntimeException("Day: " + day + " is picked twice"); 
      } 
      dayList.add(day); 


     } 
     System.out.println(userInputAsString); 
     for (String s : dayList) { 
      System.out.println(" -> " + s); 
     } 
    } 

} 
+0

Ahh ich sehe genau was du hier gemacht hast, Cleaver ... Danke! –

0

Sie wollen meetDays als Instanzvariable in der Klasse zu erklären. Diese Klasse sollte auch eine Methode enthalten, die über die eingegebenen Tage iteriert und sie zu meetDays hinzufügt. Zum Beispiel:

private void setDays(String input) { 
    for (int i=0; i<input.length(); i++) { 
     switch (input.charAt(i)) { 
      case '1': 
       meetDays += "Sunday "; 
       break; 
      case '2': 
       meetDays += "Monday "; 
       break; 
      // and so on for the remaining days 
      default: 
       //throw the exception here 
     } 
    } 
    meetDays = meetDays.trim(); 
} 
+0

Aus irgendeinem Grund kann ich nicht +1 Ihren Beitrag ... vielleicht bc Ich bin ein Noob –

+0

Es scheint hier, ich müsste für jede Kombination von Tagen, dh 23456, 24,35,246 usw. Konto. –

+0

Der Code, den ich postete, würde nicht für Kommas verantwortlich sein und würde einfach eine Ausnahme werfen, wenn es einen gefunden hat. Sie könnten etwas hinzufügen, um damit umzugehen, wenn Sie es wünschen. Abgesehen davon wird es in der Lage sein, eine beliebige Kombination von Tagen zu berücksichtigen, da es über die Eingabe iterieren und einen Tag zu "meetDays" für jede Ziffer in der Eingabe hinzufügen würde. –

Verwandte Themen