修改程序以接受包含任意数量字母的电话号码。

时间:2015-12-30 18:30:55

标签: java

修改程序以接受包含任意数量字母的电话号码。输出应在前3位后显示连字符,然后在每四位后显示连字符( - )。此外,修改程序以处理用户想要的电话号码。

以下是我必须编辑的内容。

GameObject.FindGameObjectWithTag()

这部分是我试过的。

Start()

我的输出错误。

Scanner keyboard = new Scanner(System.in);

String telephone_letter;
int index;




System.out.print("Enter Telephone letters : ");
telephone_letter = keyboard.nextLine();
char aChar[] = telephone_letter.toCharArray();
int[] number = new int[100];
for(index=0;index<telephone_letter.length();index++){


    switch (aChar[index]) 
    {
        case 'A':
        case 'a':
        case 'B':
        case 'b':
        case 'C':
        case 'c':
            number[index] = 2;
            break;
        case 'D':
        case 'd':
        case 'E':
        case 'e':
        case 'F':
        case 'f':
            number[index] = 3;
            break;
        case 'G':
        case 'g':
        case 'H':
        case 'h':
        case 'I':
        case 'i':
            number[index] = 4;
            break;
        case 'J':
        case 'j':
        case 'K':
        case 'k':
        case 'L':
        case 'l':
            number[index] = 5;
            break;
        case 'M':
        case 'm':
        case 'N':
        case 'n':
        case 'O':
        case 'o':
            number[index] = 6;
            break;
        case 'P':
        case 'p':
        case 'Q':
        case 'q':
        case 'R':
        case 'r':
        case 'S':
        case 's':
            number[index] = 7;
            break;
        case 'T':
        case 't':
        case 'U':
        case 'u':
        case 'V':
        case 'v':
            number[index] = 8;
            break;
        case 'W':
        case 'w':
        case 'X':
        case 'x':
        case 'Y':
        case 'y':
        case 'Z':
        case 'z':
            number[index] = 9;
            break;
        default:
            break;


    }

}

System.out.println("=======================================");
System.out.println("The Telephone letter is : " + telephone_letter);
System.out.println("The Phone number is     : " + number[0]+number[1]+number[2]+"-"+number[3]+number[4]+number[5]+number[6]);
System.out.println("=======================================");  

}

另一个问题是我如何做Scanner keyboard = new Scanner(System.in); String telephone_letter; int index; System.out.print("Enter Telephone letters : "); telephone_letter = keyboard.nextLine(); char aChar[] = telephone_letter.toCharArray(); int[] number = new int[100]; while(telephone_letter !="2") { for(index=0;index<telephone_letter.length();index++){ switch (aChar[index]) { case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': number[index] = 2; break; case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': number[index] = 3; break; case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': number[index] = 4; break; case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': number[index] = 5; break; case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': number[index] = 6; break; case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': case 'S': case 's': number[index] = 7; break; case 'T': case 't': case 'U': case 'u': case 'V': case 'v': number[index] = 8; break; case 'W': case 'w': case 'X': case 'x': case 'Y': case 'y': case 'Z': case 'z': number[index] = 9; break; default: break; } } System.out.println("======================================="); System.out.println("The Telephone letter is : " + telephone_letter); System.out.println("The Phone number is : " + number[0]+number[1]+number[2]+"-"+number[3]+number[4]+number[5]+number[6]); System.out.println("======================================="); System.out.print("Enter Telephone letters : "); telephone_letter = keyboard.nextLine(); }

2 个答案:

答案 0 :(得分:0)

这似乎是一个家庭作业问题所以这里有一些提示可以帮助你自己解决。

(1)使用像100这样的固定数字很少是个好主意:

int[] number = new int[aChar.length];

(2)扫描仪可以告诉您是否还有更多要扫描(读取)的内容:

Scanner keyboard  = new Scanner(System.in);
System.out.print("Enter Telephone letters : ");
while (keyboard.hasNextLine()) {
        String telephone_letter = keyboard.nextLine();
        ...
        System.out.println("");
        System.out.print("Enter Telephone letters : ");
}

(3)循环适合计数。如果第一个计数不同,则开始不同:

            int todash = 3;
            System.out.print("The Phone number is     : ");
            for (int i=0; i < number.length; ++i) {
                    if (todash == 0) {
                            System.out.print("-");
                            todash = 4;
                    }
                    System.out.print(number[i]);
                    --todash;
            }
            System.out.println("");

答案 1 :(得分:0)

我已经重写了你的代码。它可能更容易使用。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Telephone {


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

        System.out.print("Enter Telephone letters : ");
        String input = keyboard.nextLine();

        TelephoneProcessor telephoneProcessor = new TelephoneProcessor(input);
        String result = telephoneProcessor.proccess();

        System.out.println("=======================================");
        System.out.println("The Telephone letter is : " + input);
        System.out.println("The Phone number is     : " + result);
        System.out.println("=======================================");

    }

}

class TelephoneProcessor {

    Map<String, String> matches = new HashMap<>();
    String toProcess;

    public TelephoneProcessor(String toProcess) {
        this.toProcess = toProcess;
        matches.put("[a-c]", "2");
        matches.put("[d-f]", "3");
        matches.put("[g-i]", "4");
        matches.put("[j-l]", "5");
        matches.put("[m-o]", "6");
        matches.put("[p-r]", "7");
        matches.put("[s-w]", "8");
        matches.put("[x-z]", "9");
    }
    public String proccess() {

        if(toProcess != "2") {
            matches.forEach((regex, replacement) -> {
                toProcess = toProcess.replaceAll(regex, replacement);
            });
        }

        return toProcess.substring(0,3) + "-" + toProcess.substring(3,7);
    }
}

它只询问一次,但通过在方法中创建包含main方法的类并循环它很容易解决。

我希望这有助于进一步扩展该计划:)