Supdawg
Supdawg

Reputation: 61

Changing from an input to a Scanner

I am trying to change this from an input box into a Scanner class, but i am having trouble doing so.

Its a program that takes words and makes them into a phone number here is the code that does so. Any help would be greatly appreciated and if there is something that i can do in return i would gladly do so.

// declare imports
import java.util.Scanner;
import javax.swing.JOptionPane;
import java.util.*;
public class Telephone {
    public static void main(String[] args) {
        // ask for the phone number (in letters)
        char letter;
        String inputMessage = "Please enter the number in Letters " + "or enter '#' to stop the program ";
        String inputString = JOptionPane.showInputDialog(inputMessage);
        String outputString = "";
        String outputMessage = "";
        int digit = 0;
        int x = 0;
        for (int i = 0; i < inputString.length(); i++)
        System.out.print(inputString.charAt(x)); {
            while (inputString.charAt(x) != '#') {
                letter = Character.toUpperCase(inputString.charAt(x));
                x++;
                // make sure its not a number
                if (letter >= 'a' && letter <= 'z') if (letter >= 'A' && letter <= 'Z') {
                    digit++;
                    switch (letter) {
                        case 'A':
                        case 'B':
                        case 'C':
                            outputString += "2";
                            break;
                        case 'D':
                        case 'E':
                        case 'F':
                            outputString += "3";
                            break;
                        case 'G':
                        case 'H':
                        case 'I':
                            outputString += "4";
                            break;
                        case 'J':
                        case 'K':
                        case 'L':
                            outputString += "5";
                            break;
                        case 'M':
                        case 'N':
                        case 'O':
                            outputString += "6";
                            break;
                        case 'P':
                        case 'Q':
                        case 'R':
                        case 'S':
                            outputString += "7";
                            break;
                        case 'T':
                        case 'U':
                        case 'V':
                            outputString += "8";
                            break;
                        case 'W':
                        case 'X':
                        case 'Y':
                        case 'Z':
                            outputString += "9";
                    }
                    if (digit == 7) {
                        break;
                    }
                    if (digit == 3) {
                        outputString += "-";
                    }
                }
                inputMessage = "Enter another set of telephone letters";
            }
            JOptionPane.showMessageDialog(null, outputString, "Telephone Program", JOptionPane.PLAIN_MESSAGE);

        }

Upvotes: 0

Views: 168

Answers (1)

melc
melc

Reputation: 11671

Modify the line where you show the JOptionPane as follows,

//String inputString = JOptionPane.showInputDialog(inputMessage);
System.out.println(inputMessage);
Scanner sc = new Scanner(System.in);
String inputString = sc.nextLine();

so you could do the following,

package test;

import java.util.Scanner;

public class Telephone {

    public static void main(String[] args) {
        // ask for the phone number (in letters)
        char letter;
        String inputMessage = "Please enter the number in Letters " + "or enter '#' to stop the program ";
//        String inputString = JOptionPane.showInputDialog(inputMessage);

        System.out.println(inputMessage);
        Scanner sc = new Scanner(System.in);
        String inputString = sc.nextLine();

        String outputString = "";
        String outputMessage = "";
        int digit = 0;
        int x = 0;
        for (int i = 0; i < inputString.length(); i++) {
            System.out.print(inputString.charAt(x));
        }

        while (inputString != null && inputString.trim().length() > 0 && inputString.charAt(x) != '#') {
            letter = Character.toUpperCase(inputString.charAt(x));
            x++;
            // make sure its not a number
//                if (letter >= 'a' && letter <= 'z') {
            if (x >= inputString.length()) {
                x = 0;
                System.out.println("\n" + outputString);
//                JOptionPane.showMessageDialog(null, outputString, "Telephone Program", JOptionPane.PLAIN_MESSAGE);
//                inputString = JOptionPane.showInputDialog(inputMessage);
                System.out.println(inputMessage);
                inputString = sc.nextLine();
            } else if (letter >= 'A' && letter <= 'Z') {
                digit++;
                switch (letter) {
                    case 'A':
                    case 'B':
                    case 'C':
                        outputString += "2";
                        break;
                    case 'D':
                    case 'E':
                    case 'F':
                        outputString += "3";
                        break;
                    case 'G':
                    case 'H':
                    case 'I':
                        outputString += "4";
                        break;
                    case 'J':
                    case 'K':
                    case 'L':
                        outputString += "5";
                        break;
                    case 'M':
                    case 'N':
                    case 'O':
                        outputString += "6";
                        break;
                    case 'P':
                    case 'Q':
                    case 'R':
                    case 'S':
                        outputString += "7";
                        break;
                    case 'T':
                    case 'U':
                    case 'V':
                        outputString += "8";
                        break;
                    case 'W':
                    case 'X':
                    case 'Y':
                    case 'Z':
                        outputString += "9";
                }
                if (digit == 7) {
                    break;
                }
                if (digit == 3) {
                    outputString += "-";
                }
            }
//                }
            inputMessage = "Enter another set of telephone letters";
        }
        System.out.println("\n" + outputString);
//        JOptionPane.showMessageDialog(null, outputString, "Telephone Program", JOptionPane.PLAIN_MESSAGE);

    }
}

Upvotes: 1

Related Questions