Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 电话号码字符转换器_Java_Arrays_String_For Loop - Fatal编程技术网

Java 电话号码字符转换器

Java 电话号码字符转换器,java,arrays,string,for-loop,Java,Arrays,String,For Loop,我是Java新手,我有一个家庭作业,我要写一个程序,将一个电话号码转换成与该号码相关的所有可能的字符串。不过,我很难弄清楚这件事的逻辑。这就是我目前所拥有的。如有任何建议,将不胜感激 import java.util.*; public class phoneNumberString{ String[] thisString = {""}; public static void main(String[] args) { } public static String dialPad[][

我是Java新手,我有一个家庭作业,我要写一个程序,将一个电话号码转换成与该号码相关的所有可能的字符串。不过,我很难弄清楚这件事的逻辑。这就是我目前所拥有的。如有任何建议,将不胜感激

import java.util.*;
public class phoneNumberString{
String[] thisString = {""};
public static void main(String[] args) {


}  
public static String dialPad[][] = {
    {"0"}, {"1"}, {"A", "B", "C"}, {"D", "E", "F"}, {"G", "H", "I"},
    {"J", "K", "L"}, {"M", "N", "O"}, {"P", "Q", "R", "S"}, 
    {"T", "U", "V"}, {"W", "X", "Y", "Z"}
};

public String[] dial(int number) {

for(int i = 0; i < dialPad.length; i++)

    if(i == 0 ||  i == 1 )
        thisString = new String [] {""};

return thisString;

        }

public static void print(String[] thisString) {
    System.out.println(thisString);
}

}
import java.util.*;
公共类电话号码字符串{
字符串[]thisString={”“};
公共静态void main(字符串[]args){
}  
公共静态字符串拨号板[][]={
{“0”}、{“1”}、{“A”、“B”、“C”}、{“D”、“E”、“F”}、{“G”、“H”、“I”},
{“J”,“K”,“L”},{“M”,“N”,“O”},{“P”,“Q”,“R”,“S”},
{“T”,“U”,“V”},{“W”,“X”,“Y”,“Z”}
};
公用字符串[]拨号(整数){
对于(int i=0;i
所以首先要做的是将数字分解成相应的数字。。。i、 1234是1,2,3。。。。各种解决方案,但最容易理解没有数学是通过字符串操纵

private int[] numberAsDigits(int number) {
    String numberAsString = String.valueOf(number);
    int[] numberAsDigits = new int[numberAsString.length()];
    char[] chars = numberAsString.toCharArray();
    for (int i = 0; i < chars.length; i++) {
        numberAsDigits[i] = Integer.parseInt(String.valueOf(chars[i]));
    }
    return numberAsDigits;
}
因此,您可以从计数器构建字符串

// current combination
StringBuilder builder = new StringBuilder();
for (int i = 0; i < counters.length; i++) {
    String[] combosForCurrentDigit= dialPad[numberAsDigits[i]];
    builder.append(combosForCurrentDigit[counters[i]]);
}
results.add(builder.toString());

在这种情况下,我发现选择一个小例子,在远离计算机的情况下手工操作是很有用的。。。。看看你的大脑如何解决它,你采取了什么步骤。。。然后将其转化为算法……谢谢。我明天早上再看。我很欣赏你完成这些步骤的方式。我还有两个问题:如果我想随机化拨打的号码,以查看所有可能的组合,以及如何使用PrintStream将其打印到文件中?
// current combination
StringBuilder builder = new StringBuilder();
for (int i = 0; i < counters.length; i++) {
    String[] combosForCurrentDigit= dialPad[numberAsDigits[i]];
    builder.append(combosForCurrentDigit[counters[i]]);
}
results.add(builder.toString());
// increment the counters
counters[0]++;
for (int i = 0; i < counters.length; i++) {
    String[] combosForCurrentDigit = dialPad[numberAsDigits[i]];
    if (counters[i] == combosForCurrentDigit.length) {
        counters[i] = 0;
        if (i + 1 == counters.length) {
            finished = true;
        } else {
            counters[i + 1]++;
        }
    }
}
public static void main(String[] args) {
    System.out.println(Arrays.toString(new phoneNumberString().dial(223)));
}

public static String dialPad[][] = { { "0" }, { "1" }, { "A", "B", "C" }, { "D", "E", "F" }, { "G", "H", "I" },
        { "J", "K", "L" }, { "M", "N", "O" }, { "P", "Q", "R", "S" }, { "T", "U", "V" }, { "W", "X", "Y", "Z" } };

public String[] dial(int number) {
    int[] numberAsDigits = numberAsDigits(number);

    int[] counters = new int[numberAsDigits.length];
    boolean finished = false;
    List<String> results = new ArrayList<>();
    while (!finished) {
        // current combination
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < counters.length; i++) {
            String[] combosForCurrentDigit = dialPad[numberAsDigits[i]];
            builder.append(combosForCurrentDigit[counters[i]]);
        }
        results.add(builder.toString());

        // increment the counters
        counters[0]++;
        for (int i = 0; i < counters.length; i++) {
            String[] combosForCurrentDigit = dialPad[numberAsDigits[i]];
            if (counters[i] == combosForCurrentDigit.length) {
                counters[i] = 0;
                if (i + 1 == counters.length) {
                    finished = true;
                } else {
                    counters[i + 1]++;
                }
            }
        }
    }

    return results.toArray(new String[0]);
}

private int[] numberAsDigits(int number) {
    String numberAsString = String.valueOf(number);
    int[] numberAsDigits = new int[numberAsString.length()];
    char[] chars = numberAsString.toCharArray();
    for (int i = 0; i < chars.length; i++) {
        numberAsDigits[i] = Integer.parseInt(String.valueOf(chars[i]));
    }
    return numberAsDigits;
}
[AAD, BAD, CAD, ABD, BBD, CBD, ACD, BCD, CCD, AAE, BAE, CAE, ABE, BBE, CBE, ACE, BCE, CCE, AAF, BAF, CAF, ABF, BBF, CBF, ACF, BCF, CCF]