Programeer opdrachtenOpdracht : opdr5b_grendel.txt

Terug naar de inzendingen
Opdracht 5b,Tom Grendel
13 April 2005
 Mijn Inzending voor 5b in Java. De 'toetsen' worden opgezocht in een
 multi-dimensionale array.
 
 EDIT: Runtime voorbeeld:
 Code:
 
 Enter text: opdracht 5b!
 o 6, 3
 p 7, 1
 d 3, 1
 r 7, 3
 a 2, 1
 c 2, 3
 h 4, 2
 t 8, 1
 SPACE
 5 5, 4
 b 2, 2
 1 
*****opdracht5b.java*****
  
 2/*
 3 * Name:        opdracht5b.java
 4 * Author:      Thomas Grendel 
 5 * Description: T9-keyboard 
 6 * Convert characters to numeric key presses (e.g. for cellphone SMS usage)
 7 *
 8 * - the array number represents the numeric key for the characters
 9 * - the position within an array + 1 represents the key presses
 10 * - special characters (~!@#$ etc.) are ignored and not printed
 11 *
 12 * License: Copyright (c) 2005 GNU/GPL
 13 * Created on April 1, 2005, 6:51 PM
 14 */
 15
 16package nedlinux;
 17import java.io.*;                   // for commandline input
 18
 19public class opdracht5b {
 20    
 21    /** Creates a new instance of opdracht5b */
 22    public opdracht5b() {
 23    }
 24    
 25    public static void main(String[] args) {
 26        int i, j, k;
 27        
 28        // key representations
 29        char options[][] = {
 30            {'0'},                     // 0 and
 31            {'1'},                     // 1 don't represent characters
 32            {'a', 'b', 'c', '2'}, 
 33            {'d', 'e', 'f', '3'},
 34            {'g', 'h', 'i', '4'},
 35            {'j', 'k', 'l', '5'},
 36            {'m', 'n', 'o', '6'},
 37            {'p', 'q', 'r', 's', '7'},
 38            {'t', 'u', 'v', '8'},
 39            {'w', 'x', 'y', 'z', '9'} 
 40        };
 41        
 42        //  prompt the user
 43        System.out.print("Enter text: ");
 44        
 45        //  open up standard input
 46        BufferedReader br = new BufferedReader(new
 47InputStreamReader(System.in));
 48        String text = null;
 49        
 50        //  read text from commandline
 51        try {
 52            text = br.readLine();
 53        } catch (IOException ioe) {
 54            System.out.println("IO error trying to read input!");
 55            System.exit(1);
 56        }
 57        
 58        text = text.toLowerCase();  // ignore uppercase
 59        
 60        // loop through string 'text', comparing one character at a time
 61        for (k = 0; k < text.length(); k++) {
 62            for (i = 0; i < 10; i++) {
 63                for (j = 0; j < options[i].length; j++) {
 64                    if (text.charAt(k) == options[i][j])    // character found 
 65                        // display character, accompanying numeric key and key
 66                        // presses 
 67                        System.out.println(text.charAt(k) + "  "+ i + ", " +
 68(j+1));   
 69                }
 70            }
 71            if (text.charAt(k) == ' ')
 72                System.out.println("SPACE");
 73        }
 74        System.exit(0);
 75    }
 76    
 77}
 
 
Mijn commentaar
 
 Tom,
 Een simpele en duidelijke oplossing die goed onderhoud baar is.
 Het gebruik van de tabel die je in regel 31-38 opzet bied het voordeel
 dat het programma eenvoudig kan worden aangepast om de letters met speciale
 leestekens zoals umlaut ook te kunnen verwerken.
 Het enige waar ik echt niet van houd is het afbreken van het programma in
 regel 54
 Zeker het is juist en ook door mij gespecificeerd om I/O fouten correct af te
 handelen, en in dit programma zal het ook goed gaan.
 Echter in een meer ingewikkeld programma is het beter voor een opzet te kiezen
 waarbij het programma gewoon tot het einde doorloopt en de delen die niet
 uitgevoerd kunnen worden worden overgeslagen.
 
 Een practisch voorbeeld van het hoe en waarom volgt hieronder
 Stel ik wil een HTML pagina genereren door een bestand te lezen
 dat doe jij dat ongeveer als volgt
 
 print "";
 if (openfile filename == NULL ) then exit
 print FILE;'
 print "";
 
 Waneer de file nu niet geopend kan worden,
 word de html pagina niet meer goed afgesloten met het tag
 Je krijgt dan een slechte pagina die door somige browsers niet gelezen kan
 worden.