Cellphone Texting
Back to the Program-A-Day homepage
Problem(FROM COMSCI CONTEST 2010) 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. I learned that commenting important parts of the code really helps a lot especially to myself since I can track down why I did that code. Also, if you want to check or want to debug your code, try commenting out the parts you don't need yet and try to output some parts of the code to see what your code is doing. And the last but not the least. Don't do all the coding in one shot, it will take you more time to debug it than running the program while the coding is still small."
| |
---|---|---|
SolutionStart by importing the swing java package. import javax.swing.*; import java.util.Scanner;
Note: This solution will show 3 method to do all these steps to make the program look neat. You can always put all codes in main but it will be messy
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; }
| ||
Code |