lydiannna Δημοσ. 31 Ιανουαρίου 2008 Δημοσ. 31 Ιανουαρίου 2008 Έχω την παρακάτω άσκηση σε java. Προσπάθησα τη λύση αλλά δεν μου έβγαινε. Όποιος μπορεί να βοηθήσει, τον ευχαριστώ πολύ. /* Να γραφεί μια κλάση με όνομα (Hendiadys) και δημόσιο προσδιοριστή.Η κλάση Hendiadys πρέπει να περιέχει δύο στατικές μεθόδους m_devast και m_sandclub .Η πρώτη μέθοδος m_devast θα πρέπει να δέχεται ως όρισμα μια συμβολοσειρά (String). Η συμβολοσειρά αυτή θα περιέχει το όνομα του αρχείου που πρέπει να δημιουργηθεί. Το αρχείο αυτό θα πρέπει να έχει τα εξής χαρακτηριστικά: - Μέγεθος: 2055 bytes - Λίστα επιτρεπόμενων χαρακτήρων: byte[] a_foreseize = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', '1', '-', '2', '3'}. Η λίστα των επιτρεπόμενων χαρακτήρων θα πρέπει να οριστεί ως στατικό δημόσιο χαρακτηριστικό της κλάσης Hendiadys με όνομα a_foreseize. Τα δεδομένα του αρχείου πρέπει να είναι τυχαία και να ακολουθούν ομοιόμορφη κατανομή. (Όλοι οι χαρακτήρες να έχουν περίπου τον ίδιο αριθμό εμφάνισης). Η μέθοδος m_devast θα πρέπει να επιστρέφει μια μεταβλητή τύπου long που θα περιέχει το άθροισμα των τιμών ASCII των 500 πρώτων χαρακτήρων. Η μέθοδος m_sandclub θα πρέπει να δέχεται ώς όρισμα μία συμβολοσειρά (String) η οποία θα περιέχει το όνομα ενός αρχείου χαρακτήρων. Το αρχείο θα διαβάζεται στην μνήμη και θα καταγράφονται για αυτό οι παρακάτω μετρικές: - Μέγεθος - Αριθμός εμφανίσεων για κάθε χαρακτήρα που περιλαμβάνεται στον πίνακα που ορίστηκε στον πίνακα a_foreseize. Τα δεδομένα θα πρέπει να επιστρέφονται ως πίνακας από ακεραίους (int) από την m_sandclub. Ο πίνακας αυτός στην θέση 1 (π.χ. a[0]) θα έχει το μεγεθος του αρχείου και στις υπόλοιπες των αριθμό εμφανίσεων για κάθε χαρακτήρα (π.χ. στην θέση 2 τον αριθμό εμφανήσεων του πρώτου χαρακτήρα κ.ο.κ.). hints - Έξεταστε τις προδιαγραφές των κλάσεων java.io.DataInputStream, java.io.FileInputStream και java.lang.Character */ import java.io.*; import java.util.*; import java.lang.Character.UnicodeBlock; import java.nio.charset.Charset; import java.util.SortedMap; public class Hendiadys { public static void main(String args[]) { if (args.length != 2) { System.err.println("Usage: CharCount file encoding"); System.exit(1); } final String fileName="Lydia"; int size=2055; BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)); } catch (FileNotFoundException e) { System.err.println("Unable to open file " + fileName + ": " + e.getMessage()); System.exit(1); } public static byte[] a_foreseize = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', '1', '-', '2', '3'} public static long m_devast(fileName){ long sum=0; for(int q=1;q<=500;q++){ a_foreseize<String,Charset> ac = Charset.availableCharsets(); for(long k:ac.keySet()) sum+=k; }return sum; } public static m_sandclub (fileName){ Integer count=new Integer[]; try { int c; while ((c = in.read()) != -1) { Character.UnicodeBlock u = Character.UnicodeBlock.of©; Integer oldN = count.get(u); if (oldN == null) count.put(u, 1); else count.put(u, oldN + 1); } in.close(); } catch (Exception e) { System.err.println("Error reading character: " + e.getMessage()); System.exit(1); } for(int i=0;i<=2055;i++){ if(i!=0) count=
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.