Java 从输入更改为扫描仪

Java 从输入更改为扫描仪,java,Java,我正试图将它从一个输入框更改为一个Scanner类,但在这样做时遇到了问题 这是一个程序,它将文字输入到电话号码中,这里是代码。任何帮助都将不胜感激,如果有什么我可以做的回报,我会很乐意这样做 // declare imports import java.util.Scanner; import javax.swing.JOptionPane; import java.util.*; public class Telephone { public static void main(Str

我正试图将它从一个输入框更改为一个Scanner类,但在这样做时遇到了问题

这是一个程序,它将文字输入到电话号码中,这里是代码。任何帮助都将不胜感激,如果有什么我可以做的回报,我会很乐意这样做

// 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);

        }
//声明导入
导入java.util.Scanner;
导入javax.swing.JOptionPane;
导入java.util.*;
公共电话{
公共静态void main(字符串[]args){
//询问电话号码(字母)
字符字母;
String inputMessage=“请以字母“+”输入数字或输入“#”停止程序”;
String inputString=JOptionPane.showInputDialog(inputMessage);
字符串outputString=“”;
字符串outputMessage=“”;
整数位数=0;
int x=0;
对于(int i=0;i如果(字母>='a'&&letter='a'&&letter修改显示JopOptions窗格的行,如下所示

//String inputString = JOptionPane.showInputDialog(inputMessage);
System.out.println(inputMessage);
Scanner sc = new Scanner(System.in);
String inputString = sc.nextLine();
因此,您可以执行以下操作:

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);

    }
}
封装测试;
导入java.util.Scanner;
公共电话{
公共静态void main(字符串[]args){
//询问电话号码(字母)
字符字母;
String inputMessage=“请以字母“+”输入数字或输入“#”停止程序”;
//String inputString=JOptionPane.showInputDialog(inputMessage);
System.out.println(inputMessage);
扫描仪sc=新的扫描仪(System.in);
String inputString=sc.nextLine();
字符串outputString=“”;
字符串outputMessage=“”;
整数位数=0;
int x=0;
对于(int i=0;i0&&inputString.charAt(x)!='#'){
字母=Character.toUpperCase(inputString.charAt(x));
x++;
//确保它不是一个数字
//如果(字母>='a'&&letter=inputString.length()){
x=0;
System.out.println(“\n”+输出字符串);
//showMessageDialog(null,输出字符串,“电话程序”,JOptionPane.PLAIN\u消息);
//inputString=JOptionPane.showInputDialog(inputMessage);
System.out.println(inputMessage);
inputString=sc.nextLine();

}如果(字母>='A'&&letter)你为什么不尝试缩进你的代码呢?这真的有助于可读性…欢迎使用SO。请阅读和,以获得关于编写好问题的提示。主要是,这不是一个论坛,你可以问一些不集中的问题,如“帮助我改进代码”或“告诉我有什么问题”除了代码本身之外,不提供任何详细信息。请告诉我们您遇到了什么问题,并说明到目前为止您为解决此问题所做的工作。顺便说一句:也许您可以考虑使用字符的ascii值来避免大量的切换情况。'A'是65,'B'66等等。除了最后一个块之外,其他所有块都是3..(v-65)/3)+2或类似的东西应该为所有块返回正确的数字,但最后一个块除外。当我用修改替换它并运行程序时,我得到了CCCCCCC作为输出抱歉,我认为它工作正常。我用一个完整的工作示例编辑了答案,显示了我认为您需要的内容。