zatara90 Δημοσ. 11 Δεκεμβρίου 2015 Δημοσ. 11 Δεκεμβρίου 2015 (επεξεργασμένο) Έχω μια άσκηση η οποία θέλει οι μέθοδοι μου να δέχονται ως ορίσματα ένα αρχέιο και την ίδια στιγμή η μια να το φτιάχνει και η άλλη να το διαβάζει δημιουργώντας μου πρόβλημα στον τρόπο που πρέπει να βάλω τα paths στον κώδικα. Θα σας παρακαλούσα να μου δείξετε τον τρόπο. Το όνομα του αρχείου μπορει να είναι οποιοδήποτε π.χ temp.txt kai to path π.χ C:\Data\temp.txt. Η εκφώνηση: Να γραφεί μια κλάση με όνομα Stearyl και δημόσιο προσδιοριστή.Η κλάση Stearyl πρέπει να περιέχει δύο δημόσιες, στατικές μεθόδουςmAmatorial και mSamanid.Η πρώτη μέθοδος mAmatorial θα πρέπει να δέχεται ως όρισμα μιασυμβολοσειρά (String). Η συμβολοσειρά αυτή θα περιέχει το όνοματου αρχείου που πρέπει να δημιουργηθεί.Προσοχή: Για το νέο αρχείο θα πρέπει να ορίσετε και το μονοπάτιστο οποίο θα βρίσκεται (δηλ. στο φάκελο με τις απαντήσεις σας).Το αρχείο αυτό θα πρέπει να έχει τα εξής χαρακτηριστικά:- Μέγεθος: 1077 bytes- Λίστα επιτρεπόμενων bytes:byte[] aRetooth = {97, 98, 99, 100, 101, 102, 103, 104, 105}.Η λίστα των επιτρεπόμενων bytes θα πρέπει να οριστεί ως στατικόδημόσιο χαρακτηριστικό της κλάσης Stearyl με όνομα aRetooth.Τα δεδομένα του αρχείου πρέπει να είναι τυχαία και να ακολουθούνομοιόμορφη κατανομή. (Όλα τα bytes να έχουν περίπου τον ίδιο αριθμόεμφάνισης).Η μέθοδος mAmatorial θα πρέπει να επιστρέφει μια μεταβλητή τύπουlong που θα περιέχει το άθροισμα των τιμών των 500 πρώτων bytes.Η δεύτερη μέθοδος mSamanid θα πρέπει να δέχεται ως όρισμα μίασυμβολοσειρά (String) η οποία θα περιέχει το όνομα ενός αρχείου.Το αρχείο θα διαβάζεται στην μνήμη (ορίστε και το μονοπάτι όπωςπαραπάνω) και θα καταγράφονται για αυτό οι παρακάτω μετρικές:- Μέγεθος- Αριθμός εμφανίσεων για κάθε byte που περιλαμβάνεται στον πίνακα που ορίστηκε στον πίνακα aRetooth.Τα δεδομένα θα πρέπει να επιστρέφονται ως πίνακας από ακεραίους(int) από την mSamanid. Ο πίνακας αυτός στην θέση 1 (π.χ. a[0])θα έχει το μεγεθος του αρχείου και στις υπόλοιπες των αριθμό εμφανίσεωνγια κάθε byte (π.χ. στην θέση 2 τον αριθμό εμφανίσεων του πρώτουbyte κ.ο.κ.). Κώδικας: import java.util.Random; import java.io.*; public class Stearyl{ public static int fileSize=1077; public static byte[] aRetooth = {97, 98, 99, 100, 101, 102, 103, 104, 105}; public static long mAmatorial(String filename){ Random random=new Random(); try { File file1=new File(filename); boolean success = file1.createNewFile(); if (!success){ file1.delete(); file1.createNewFile(); } } catch (IOException e) { } long sumFirst500=0; try { BufferedWriter out = new BufferedWriter(new FileWriter(filename)); for (int i=0;i<fileSize;i++){ byte a=aRetooth[random.nextInt(aRetooth.length)]; if (i<500) sumFirst500+=a; out.write(a); } out.close(); } catch (IOException e) { } return sumFirst500; } public static int[]mSamanid(String filename){ int[]pinakas=new int[aRetooth.length+1]; int length=0; byte[] bytes=null; try { File file1=new File(filename); InputStream is = new FileInputStream(file1); length = (int) file1.length(); bytes = new byte[(int)length]; int offset = 0; int numRead = 0; while (offset < bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) { offset += numRead; } if (offset < bytes.length) { throw new IOException("Could not completely read file "+file1.getName()); } is.close(); } catch (IOException e) { } pinakas[0]=length; for (int j=0;j<aRetooth.length;j++){ pinakas[j+1]=0; } for (int i=0;i<bytes.length;i++){ for (int j=0;j<aRetooth.length;j++){ if (bytes[i]==aRetooth[j]) pinakas[j+1]++; } } return pinakas; } } Επεξ/σία 11 Δεκεμβρίου 2015 από zatara90
Papakaliati Δημοσ. 11 Δεκεμβρίου 2015 Δημοσ. 11 Δεκεμβρίου 2015 Έχω μια άσκηση η οποία θέλει οι μέθοδοι μου να δέχονται ως ορίσματα ένα αρχέιο και την ίδια στιγμή η μια να το φτιάχνει και η άλλη να το διαβάζει δημιουργώντας μου πρόβλημα στον τρόπο που πρέπει να βάλω τα paths στον κώδικα. Θα σας παρακαλούσα να μου δείξετε τον τρόπο. Τι προβλημα σου δημιουργειται δεν καταλαβα ακομη. Δευτερον τι ακριβως παιζει με την νομεκλατουρα; Stearyl; mAmatorial; mSamanid; aRetooth;
zatara90 Δημοσ. 11 Δεκεμβρίου 2015 Μέλος Δημοσ. 11 Δεκεμβρίου 2015 Με λίγα λόγια δεν ξέρω πως να δηλώσω το ονομα και το path του αρχειου μέσα στις μεθόδους mAmatorial και mSamanid ώστε οι μέθοδοι να λειτουργούν σύμφωνα με την εκφώνηση. Θα μπορούσα να φτιάξω μια main όπου θα καλούσα τις μεθόδους μέσω αντικειμένων και θα δείλωνα εκεί το όνομα και το path και θα τελείωνε εκεί η υπόθεση αλλά η άσκηση δεν θέλει main. H νομεκλατούρα είναι γιατί η ασκηση είναι απο randomizer που σου δίνει ο καθηγητής.
defacer Δημοσ. 11 Δεκεμβρίου 2015 Δημοσ. 11 Δεκεμβρίου 2015 Δε θα το δηλώσεις μέσα στις μεθόδους, αφού ήδη λειτουργούν σύμφωνα με την εκφώνηση. Εννοείται πως αν θέλεις να το δεις να τρέχει θα πρέπει να έχεις και μια main, δεν υπάρχει άλλος λογικός τρόπος. Μη μπερδεύεις το "δε θέλει main στη λύση που υποβάλλεις" με το "δε θα υπάρχει main ποτέ και πουθενά".
zatara90 Δημοσ. 11 Δεκεμβρίου 2015 Μέλος Δημοσ. 11 Δεκεμβρίου 2015 Φίλε μου, οι ασκήσεις που μας βάζει είναι του "δε θα υπάρχει main ποτέ και πουθενά" δυστυχώς. Όταν το πας να κάνει check task στο φάκελο με τις απαντήσεις, το προγραμμα το κάνει compile μόνο του (με κάποιο τρόπο) και σου λέει αν υπάρχει πρόβλημα. Στην περίπτωση μου αν βάλω main μου λέει ότι δεν λύθηκε η ασκηση σύμφωνα με την εκφώνηση. public static void main(String args[]){ Stearyl sl=new Stearyl(); long a=sl.mAmatorial("C:\Users\***\Desktop\java_programming_2\exercises\temp.txt"); System.out.println(a); int f[]=sl.mSamanid("C:\Users\***\Desktop\java_programming_2\exercises\temp.txt"); for (int i=0;i<f.length;i++){ System.out.println(f[i]); } }
defacer Δημοσ. 11 Δεκεμβρίου 2015 Δημοσ. 11 Δεκεμβρίου 2015 Όταν το πας να κάνει check task στο φάκελο με τις απαντήσεις, το προγραμμα το κάνει compile μόνο του (με κάποιο τρόπο) και σου λέει αν υπάρχει πρόβλημα.Μάντεψε ποιος είναι αυτός ο τρόπος. Υπάρχει ένα πρόγραμμα με main που φορτώνει την class σου και κάνει δουλειά. Έτσι κι αλλιώς όμως δεν κατάλαβες τι είπα. Δε θα την υποβάλλεις τη main. Για τις δοκιμές θα την έχεις. ΥΓ το new Stearyl τι ρόλο παίζει; Μήπως δεν έχεις καταλάβει τι σημαίνει static? 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα