-1

I have seen this question asked a lot on here but I can't seem to figure out why my code doesn't work when the input are lower case characters.

When I input lower case characters it seems to execute endlessly until I terminate it. I have used the Character.toUpperCase(char) method but I assume that I haven't used it properly or there's a problem with the format of my code?

I just can't figure it out. I know that I can simply add case 'a': case 'A': to allow for both lowercase and uppercase input but I want to be able to use the Character.toUpperCase(char) method in future.

Can anyone help? Thanks in advance.

    System.out.println("Please enter seven letters that you would like to convert into numbers:");
    String inputNumber = console.next();

    while (i < 8) {
        letter = inputNumber.charAt(i);
        Character.toUpperCase(letter);
        if (i == 3)
        {
            outputNumber = outputNumber + "-";
        }
        switch(letter)
        {
        case 'A': case 'B':
        case 'C': outputNumber = outputNumber + "2";
            i++;
        break;

        case 'D': case 'E':
        case 'F': outputNumber = outputNumber + "3";
            i++;    
        break;

        case 'G': case 'H':
        case 'I': outputNumber = outputNumber + "4";
            i++;    
        break;

        case 'J': case 'K':
        case 'L': outputNumber = outputNumber + "5";
            i++;
        break;

        case 'M': case 'N':
        case 'O': outputNumber = outputNumber + "6";    
            i++;
        break;

        case 'P': case 'Q': case 'R':
        case 'S': outputNumber = outputNumber + "7";
            i++;
        break;

        case 'T': case 'U': 
        case 'V': outputNumber = outputNumber + "8";        
            i++;
        break;

        case 'W': case 'X': case 'Y':
        case 'Z': outputNumber = outputNumber + "9";
            i++;
        break;  
        case ' ': outputNumber = outputNumber + " ";
        break;
        default: outputNumber = "Invalid input.";       
    }
} System.out.println(outputNumber);
System.exit(0);
Kurtis
  • 7

2 Answers2

3

Character.toUpperCase(letter); doesn't modify letter, since char is immutable, and even if it wasn't, you can't modify the value of a variable by passing it to a method.

You need to write:

letter = Character.toUpperCase(letter);

Or replace:

letter = inputNumber.charAt(i);
Character.toUpperCase(letter);

with

letter = Character.toUpperCase(inputNumber.charAt(i));
Eran
  • 387,369
  • 54
  • 702
  • 768
0

Write either

    letter = Character.toUpperCase(inputNumber.charAt(i));

or

    switch (Character.toUpperCase(letter)) {
M. le Rutte
  • 3,525
  • 3
  • 18
  • 31