Search code examples
javastringloopsoutputletter

Creating a string from loop results in java


I need to be able to save the loop results to a string to be able to manipulate the user output. No arrays

I've attempted to convert to string inside the loop which does not make much sense. I can't figure another way to save the results unless I make another method. I am not allowed create arrays.

    public static void main(String[] args){
        Scanner input = new Scanner(System.in);

            System.out.print("Enter phone number: ");
            String number = input.nextLine();
            String phone ="";

            for (int i = 0; i < number.length(); i++){
                if (Character.isLetter(number.charAt(i)))
                    phone = getNumber(Character.toUpperCase(number.charAt(i)));
                else
                    number.charAt(i);
            }
            System.out.println("Your number is " + phone);              
    }


public static int getNumber(char uppercaseLetter){
        if (uppercaseLetter >= 'W' && uppercaseLetter <= 'Z')
            return 9;
        else if (uppercaseLetter >= 'T' && uppercaseLetter < 'W')
            return 8;
        else if (uppercaseLetter >= 'P' && uppercaseLetter < 'T')
            return 7;
        else if (uppercaseLetter >= 'M' && uppercaseLetter < 'P')
            return 6;
        else if (uppercaseLetter >= 'J' && uppercaseLetter < 'M')
            return 5;
        else if (uppercaseLetter >= 'G' && uppercaseLetter < 'J')
            return 4;
        else if (uppercaseLetter >= 'D' && uppercaseLetter < 'G')
            return 3;
        else 
            return 2;
    }
}

should look like: ie. 352-hey-call = "Your number is 352-439-2255"


Solution

  • Actually, for each char you're looking for the corresponding letter or number, but you don't use it, you need to append them together. Using += operator on String, but as it's in a loop for better performance it's recommended to use a StringBuilder

    StringBuilder phone = new StringBuilder();
    for (int i = 0; i < number.length(); i++){
        if (Character.isLetter(number.charAt(i))){
            phone.append(getNumber(Character.toUpperCase(number.charAt(i))));
        }else{
            phone.append(number.charAt(i));
        }
    }
    
    System.out.println("Your number is " + phone.toString());