fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10.  
  11. // we want mostly 3 letters per key..... except PQRS
  12. // so, set the span for each letter to 1/3 of the full span, less a small
  13. // amount so that there can actually be 4 in some keys.
  14. private static final double SPAN = (1.0 / 3.0) - (1.0 / 260.0);
  15. // and we want those 4 letters to happen on key 7 - 15 letters in.
  16. private static final double OFFSET = 7.0 - (SPAN * 15);
  17.  
  18. public static final char charForKey(final char letter) {
  19. final int comp = Character.toUpperCase(letter) - 'A';
  20. if (comp < 0 || comp >= 26) {
  21. return letter;
  22. }
  23. char key = (char)('0' + OFFSET + comp * SPAN);
  24. // correct Z overflow to 10.
  25. return key > '9' ? '9' : key;
  26. }
  27.  
  28. public static final String keysFromNumber(String input) {
  29. StringBuilder sb = new StringBuilder(input.length());
  30. input.chars().forEach(c -> sb.append(charForKey((char)c)));
  31. return sb.toString();
  32. }
  33.  
  34. public static void main(String[] args) {
  35. for (int ch = ' '; ch < 125; ch++) {
  36. System.out.printf("Char '%s' > %s\n", (char)ch, charForKey((char)ch));
  37. }
  38. String[] inputs = {"1-800-Got-Junk", "Java Rocks!!!"};
  39. for (String input : inputs) {
  40. System.out.printf("%s -> %s\n", input, keysFromNumber(input));
  41. }
  42. }
  43.  
  44. }
Success #stdin #stdout 0.2s 320576KB
stdin
Standard input is empty
stdout
Char ' ' >  
Char '!' > !
Char '"' > "
Char '#' > #
Char '$' > $
Char '%' > %
Char '&' > &
Char ''' > '
Char '(' > (
Char ')' > )
Char '*' > *
Char '+' > +
Char ',' > ,
Char '-' > -
Char '.' > .
Char '/' > /
Char '0' > 0
Char '1' > 1
Char '2' > 2
Char '3' > 3
Char '4' > 4
Char '5' > 5
Char '6' > 6
Char '7' > 7
Char '8' > 8
Char '9' > 9
Char ':' > :
Char ';' > ;
Char '<' > <
Char '=' > =
Char '>' > >
Char '?' > ?
Char '@' > @
Char 'A' > 2
Char 'B' > 2
Char 'C' > 2
Char 'D' > 3
Char 'E' > 3
Char 'F' > 3
Char 'G' > 4
Char 'H' > 4
Char 'I' > 4
Char 'J' > 5
Char 'K' > 5
Char 'L' > 5
Char 'M' > 6
Char 'N' > 6
Char 'O' > 6
Char 'P' > 7
Char 'Q' > 7
Char 'R' > 7
Char 'S' > 7
Char 'T' > 8
Char 'U' > 8
Char 'V' > 8
Char 'W' > 9
Char 'X' > 9
Char 'Y' > 9
Char 'Z' > 9
Char '[' > [
Char '\' > \
Char ']' > ]
Char '^' > ^
Char '_' > _
Char '`' > `
Char 'a' > 2
Char 'b' > 2
Char 'c' > 2
Char 'd' > 3
Char 'e' > 3
Char 'f' > 3
Char 'g' > 4
Char 'h' > 4
Char 'i' > 4
Char 'j' > 5
Char 'k' > 5
Char 'l' > 5
Char 'm' > 6
Char 'n' > 6
Char 'o' > 6
Char 'p' > 7
Char 'q' > 7
Char 'r' > 7
Char 's' > 7
Char 't' > 8
Char 'u' > 8
Char 'v' > 8
Char 'w' > 9
Char 'x' > 9
Char 'y' > 9
Char 'z' > 9
Char '{' > {
Char '|' > |
1-800-Got-Junk -> 1-800-468-5865
Java Rocks!!! -> 5282 76257!!!