Διαδρομές
/
Java
Java
/
Ασκήσεις
/
Το ημερολόγιο του καπετάνιου
Το ημερολόγιο του καπετάνιου

Το ημερολόγιο του καπετάνιου

Άσκηση εκμάθησης

Εισαγωγή

Τυχαιότητα

Μπορείς να χρησιμοποιήσεις ένα στιγμιότυπο της κλάσης java.util.Random για να παράγεις τυχαίους αριθμούς στην Java.

Τυχαίοι ακέραιοι

Μπορείς να παράγεις έναν τυχαίο ακέραιο με τη μέθοδο nextInt(). Αυτή παράγει μια τιμή στο εύρος από Integer.MIN_VALUE έως Integer.MAX_VALUE.

Random random = new Random();

random.nextInt();
// => -1169335537

Για να περιορίσεις το εύρος των τιμών που παράγονται, χρησιμοποίησε nextInt(int). Αυτή παράγει μια τιμή στο εύρος από 0 (συμπεριλαμβανομένου) έως το δεδομένο άνω όριο (μη συμπεριλαμβανομένου).

Για παράδειγμα, αυτό παράγει έναν τυχαίο αριθμό από 0 έως και 9.

Random random = new Random();

random.nextInt(10);
// => 6

Και αυτό παράγει έναν τυχαίο αριθμό από 10 έως και 19.

Random random = new Random();

10 + random.nextInt(10);
// => 11

Τυχαίες τιμές double

Μπορείς να παράγεις μια τυχαία τιμή double με τη μέθοδο nextDouble(). Αυτή παράγει μια τιμή στο εύρος από 0.0 έως 1.0.

Random random = new Random();

random.nextDouble();
// => 0.19250004204021398

Και αυτό παράγει έναν τυχαίο αριθμό από 100.0 έως 200.0.

Random random = new Random();

100.0 + 100.0 * random.nextDouble();
// => 111.31849856260328

Οδηγίες

Η Mary είναι μεγάλη θαυμάστρια της τηλεοπτικής σειράς Star Trek: The Next Generation. Παίζει συχνά παιχνίδια ρόλων με χαρτί και μολύβι, όπου εκείνη και οι φίλοι της προσποιούνται ότι είναι το πλήρωμα του Starship Enterprise. Ο χαρακτήρας της Mary είναι ο Captain Picard, που σημαίνει ότι πρέπει να κρατάει το ημερολόγιο του πλοιάρχου. Της αρέσει το δημιουργικό κομμάτι του παιχνιδιού, αλλά δεν της αρέσει να παράγει τυχαία δεδομένα επιτόπου.

Βοήθησε τη Mary δημιουργώντας τυχαίους γεννήτορες για δεδομένα που εμφανίζονται συχνά στο ημερολόγιο του πλοιάρχου.

Note

Η αρχική υλοποίηση αυτής της άσκησης δέχεται ένα στιγμιότυπο java.util.Random ως όρισμα του κατασκευαστή. Αυτό επιτρέπει στα tests της άσκησης να περνούν ένα στιγμιότυπο με προκαθορισμένο seed, κάνοντας τα αποτελέσματα των tests προβλέψιμα.

Επομένως, αναμένεται να χρησιμοποιήσεις το δοσμένο στιγμιότυπο java.util.Random στην υλοποίησή σου.

1. Δημιούργησε έναν τυχαίο πλανήτη

Το Starship Enterprise συναντάει πολλούς πλανήτες στα ταξίδια του. Οι πλανήτες στο σύμπαν του Star Trek χωρίζονται σε κατηγορίες με βάση τις ιδιότητές τους. Για παράδειγμα, η Γη είναι πλανήτης κλάσης M. Όλες οι πιθανές κλάσεις πλανητών είναι: D, H, J, K, L, M, N, R, T και Y.

Υλοποίησε τη μέθοδο randomPlanetClass(). Θα πρέπει να επιστρέφει τυχαία μία από τις κλάσεις πλανητών.

captainsLog.randomPlanetClass();
// => "K"

2. Δημιούργησε έναν τυχαίο αριθμό νηολογίου διαστημοπλοίου

Το Enterprise (αριθμός νηολογίου NCC-1701) δεν είναι το μόνο διαστημόπλοιο που πετάει τριγύρω! Όταν συναντιέται με ένα άλλο διαστημόπλοιο, η Mary πρέπει να καταγράψει τον αριθμό νηολογίου αυτού του διαστημοπλοίου.

Οι αριθμοί νηολογίου ξεκινούν με το πρόθεμα "NCC-" και στη συνέχεια χρησιμοποιούν έναν αριθμό από το 1000 έως το 9999 (συμπεριλαμβανομένων).

Υλοποίησε τη μέθοδο randomShipRegistryNumber() που επιστρέφει έναν τυχαίο αριθμό νηολογίου διαστημοπλοίου.

captainsLog.randomShipRegistryNumber();
// => "NCC-1947"

3. Δημιούργησε μια τυχαία αστρική ημερομηνία

Τι νόημα έχει ένα ημερολόγιο αν δεν περιλαμβάνει ημερομηνίες;

Μια αστρική ημερομηνία είναι ένας αριθμός κινητής υποδιαστολής. Οι περιπέτειες του Starship Enterprise από την πρώτη σεζόν του The Next Generation διαδραματίζονται ανάμεσα στις αστρικές ημερομηνίες 41000.0 και 42000.0. Το "4" αντιπροσωπεύει τον 24ο αιώνα και το "1" την πρώτη σεζόν.

Υλοποίησε τη μέθοδο randomStardate() που επιστρέφει έναν αριθμό κινητής υποδιαστολής ανάμεσα στο 41000.0 (συμπεριλαμβανομένου) και στο 42000.0 (μη συμπεριλαμβανομένου).

captainsLog.randomStardate();
// => 41458.15721310934
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Java Exercism

Έτοιμος να ξεκινήσεις την άσκηση Το ημερολόγιο του καπετάνιου;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Java με 26 έννοιες158 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.