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. | |
---|---|---|
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 |