1. Home
  2. Computing & Technology
  3. Java
photo of Paul Leahy
Paul's Java Blog

By Paul Leahy, About.com Guide to Java

Answer to Uncoded Line Question

Sunday October 12, 2008

On Monday the question was to write a program to calculate what the encoded line would be for:

it was a dark and stormy night

which encodes into:

xv fpu p iphs pwi uvdhnk wxcov

The program needed to take in a line of text from the user, use a combination of a for-each loop and switch statement, and finally display the encoded line. The goal was to highlight how useful the for-each loop is when you need to iterate through an entire collection (e.g., a char array). Here's my version:

import java.util.Scanner;

public class Encoder {

  public static void main(String[] args) {

     Scanner input = new Scanner(System.in);

     System.out.println("Enter in text to be encoded: ");
     String codedText = input.nextLine();

     codedText = codedText.toLowerCase();
     char letters[] = codedText.toCharArray();

     char encodedletter = ' ';
     for (char uncodedLetter:letters)
     {
       switch(uncodedLetter)
       {
         case 'z':
           encodedletter = 'a';
           break;
         case 'j':
           encodedletter = 'b';
           break;
         case 'g':
           encodedletter = 'c';
           break;
         case 'o':
           encodedletter = 'd';
           break;
         case 'p':
           encodedletter = 'e';
           break;
         case 'w':
           encodedletter = 'f';
           break;
         case 'f':
           encodedletter = 'g';
           break;
         case 'r':
           encodedletter = 'h';
           break;
         case 'd':
           encodedletter = 'i';
           break;
         case 'c':
           encodedletter = 'j';
           break;
         case 'y':
           encodedletter = 'k';
           break;
         case 'u':
           encodedletter = 'l';
           break;
         case 'q':
           encodedletter = 'm';
           break;
         case 'm':
           encodedletter = 'n';
           break;
         case 'h':
           encodedletter = 'o';
           break;
         case 'a':
           encodedletter = 'p';
           break;
         case 'x':
           encodedletter = 'q';
           break;
         case 'b':
           encodedletter = 'r';
           break;
         case 'k':
           encodedletter = 's';
           break;
         case 'e':
           encodedletter = 't';
           break;
         case 's':
           encodedletter = 'u';
           break;
         case 't':
           encodedletter = 'v';
           break;
         case 'n':
           encodedletter = 'w';
           break;
         case 'i':
           encodedletter = 'x';
           break;
         case 'l':
           encodedletter = 'y';
           break;
         case 'v':
           encodedletter = 'z';
           break;
         default:
           encodedletter = uncodedLetter;
           break;
       }
       System.out.print(encodedletter);
     }
   }
}
Comments

No comments yet. Leave a Comment

Leave a Comment

Line and paragraph breaks are automatic. Some HTML allowed: <a href="" title="">, <b>, <i>, <strike>

Discuss
Community Forum
Explore Java
About.com Special Features

Stay connected and entertained with reviews on tips on the latest HDTVs, cellphones and more. More >

Easy ways to connect two computers for networking purposes. More >

  1. Home
  2. Computing & Technology
  3. Java

©2009 About.com, a part of The New York Times Company.

All rights reserved.