Difference between revisions of "Cellphone Texting"
Line 218: | Line 218: | ||
public static void main(String[] args) | public static void main(String[] args) | ||
{ | { | ||
− | + | Scanner scan = new Scanner(System.in); // To enter the input | |
− | String input = " "; | + | String input = " "; // Store the input |
− | String convert = ""; | + | String convert = ""; // Store the translated input |
System.out.print("Enter code: "); | System.out.print("Enter code: "); | ||
− | + | while(!input.equals("")) | |
− | + | { | |
− | input = scan.nextLine(); | + | input = scan.nextLine(); // scan will get the user input and store in in the String input |
− | if(checkInput(input)) | + | if(checkInput(input)) // calls the method checkInput to check for validation |
{ | { | ||
− | convert = codeEncription(input); | + | convert = codeEncription(input); //calls the method codeEcription to translate the input into letters |
− | System.out.print("Translated Code: "+convert); | + | System.out.print("Translated Code: "+convert); //output message |
System.out.print("\nEnter code: "); | System.out.print("\nEnter code: "); | ||
− | + | } | |
else | else | ||
{ | { | ||
− | System.out.println("Invalid Input"); | + | System.out.println("Invalid Input"); //error message |
System.out.print("Enter code: "); | System.out.print("Enter code: "); | ||
} | } |
Revision as of 05:05, 5 December 2011
Back to the Program-A-Day homepage
ProblemIn non-smart cell phones, text input can be handled by a
technique called multi-tap(example picture: link here). With multi-tap, you use the
letters on each key, and press a key multiple times to
access different letters. For instance, to get the letter 'a',
you press the 2 key once, but to get 'n', you press the 6
key twice (the first press gives you 'm', the second
switches 'm' to 'n'). A slight pause by the user will indicate
the end of inputting one character and a beginning of the
input of the next character.
The letters 'q' and 'z', not originally part of the letters on a
phone, force the keys 7 and 9 to have four characters each. All other keys have 3
characters.
Enter code: 222666 67777222444 Translated Code: COMSCI Enter code: 7 2 777 2 7777 444 8 444 222 Translated Code: PARASITIC
|
By Students...COMP 1010 is where I first learned how to make a program. I was only taking that course for prerequisite and do not have interest on it, but as time goes by, I notice that I was enjoying myself making a program.
| |
---|---|---|
SolutionStart by importing the swing java package. import javax.swing.*; import java.util.Scanner;
Scanner scan = new Scanner(System.in); // To enter the input String input = " "; // Store the input String convert = ""; // Store the translated input System.out.print("Enter code: "); while(!input.equals("")) { input = scan.nextLine(); // scan will get the user input and store in in the String input if(checkInput(input)) // calls the method checkInput to check for validation { convert = codeEncription(input); //calls the method codeEcription to translate the input into letters System.out.print("Translated Code: "+convert); //output message System.out.print("\nEnter code: "); } else { System.out.println("Invalid Input"); //error message System.out.print("Enter code: "); } } Enter code: 23a43 Invalid Input Enter code: 77 88 444 9999 9999 444 222 2 555 Translated Code: QUIZZICAL
public static boolean checkInput(String input) { boolean check = true; int counter = 0; while( check && counter < input.length()) { if(input.charAt(counter) == ' ') //if space is found in the input its still valid counter++; else if(input.charAt(counter) < '0' || input.charAt(counter) > '9') //check if its a number or not check = false; else counter++; } return check; //returns true if valid or false if not valid }
public static String codeEncription(String input) { String output = ""; //Store each number that is translated into letter int counter = 1; //count the number of same consecutive number char last = input.charAt(0); //Initialize the last to the first character of the string char cur = input.charAt(0); //Initialize the cur to the first character of the string for(int i = 1 ; i <= input.length();i++) { if(i < input.length()) { cur = input.charAt(i); //store the current character to cur } else { cur = '.'; //this else statement is necessary to complete the last letter of the input } if(cur == last) { counter++; //number of same consecutive number } else { output += converter(last,counter) +""; //this will call converter() method that will change the number into letter last = cur; //to set the last into the current character counter = 1; } } return output; // return the translated code }
public static String converter(char find,int count) { //String array are manually entered. The arrangement of letters is necessary in order to get the right letter String[] two = {"C","A","B"}; String[] three = {"F","E","D"}; String[] four = {"I","G","H"}; String[] five = {"L","J","K"}; String[] six = {"O","M","N"}; String[] seven = {"S","P","Q","R"}; String[] eight = {"V","T","U"}; String[] nine = {"Z","W","X","Y"}; String convert = ""; //doing a modulus will return either 1,2 or 0 if its mod 3 and 1,2,3 or 0 if its mod 4 if(find == '2'){ convert = two[(count%3)]; }else if(find == '3') { convert = three[(count%3)]; }else if(find == '4') { convert = four[(count%3)]; }else if(find == '5') { convert = five[(count%3)]; }else if(find == '6') { convert = six[(count%3)]; }else if(find == '7') { convert = seven[(count%4)]; }else if(find == '8') { convert = eight[(count%3)]; }else if(find == '9') { convert = nine[(count%4)]; } return convert; } This concludes the program, compile and run. | ||
Code |