gpt4 book ai didi

java - 循环遍历多个数组 - 电话号码到单词生成器

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:44 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,提示用户输入一个七位数的电话号码作为输入,并计算所有可能的七个字母单词组合。对结果进行排序后,我需要打印前 10 个组合和最后 10 个组合。

我知道我可以使用 if 语句单独检查所有输入,并在最后使用 for 循环将它们打印出来;但是,我知道有更好的方法来解决这个问题。

我们还应该使用 arraycopy() 方法。

任何想法/建议将不胜感激!只是想提高我的编码技能。

EX:标准电话键盘包含数字 0 到 9。数字 2 到 9 每个都有三个与之相关的字母(如下所示)。许多人发现记住电话号码很困难,因此他们利用数字和字母之间的对应关系来开发与电话号码相对应的七个字母的单词。例如,电话号码为 686-2377 的人可能会使用此工具来开发七个字母的单词“NUMBERS”。

2: A B C 
3: D E F
4: G H I
5: J K L
6: M N 0
7: P R S
8: T U V
9: W X Y

每个七个字母的电话号码都对应着许多不同的七个字母的单词,但这些单词中的大多数都代表了无法识别的字母并置。然而,理发店的老板可能会很高兴知道该店的电话号码 424-7288 对应于“HAIRCUT”。电话号码为 738-2273 的 vert 会很高兴知道该号码对应于字母“PETCARE”。汽车经销商会很高兴知道经销商号码 639-2277 对应于“NEWCARS”。

package Assignment5;
import java.util.Scanner;
import java.lang.System;

public class PhoneNumber
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String[][] letterArray = {{"A", "B", "C"}, {"D", "E", "F"}, {"G", "H", "I"}, {"J", "K", "L"}, {"M", "N", "O"}, {"P", "R", "S"}, {"T", "U", "V"}, {"W", "X", "Y"}};
char[] numbersAsChar = new char[7];

System.out.println("Enter phone number: ");
String input = scan.nextLine();

//0 and 1 have no alphabetical value
//If user enters 0 or 1 in phone number - ask them to input a new number
while(input.contains("0") || input.contains("1") || input.contains(" "))
{
System.out.println("Invalid phone number! Please try again without 0 or 1: ");
input = scan.nextLine();
}

//Take each number from user input and assign to the array numbersAsChar
for(int i = 0; i < input.length(); i++)
{
numbersAsChar[i] = input.charAt(i);
}

//Print out each individual number input by user - Testing purposes
for(int i = 0; i < numbersAsChar.length; i++)
{
System.out.println("Entered Digit " + (i+1) + ": " + numbersAsChar[i]);
}

//Test to see what the value of each character is and print out each letter value
if (numbersAsChar[0] == '2')
{
System.out.println("Hello");
}


//use .arraycopy()
}
}

最佳答案

您可以使用递归函数来获得所有可能的组合。

此代码应该可以帮助您找到所有可能的组合


public static final Map<Integer,String[]> conversionMap = new HashMap<Integer,String[]>();

public static List<String> findCombinations(String phoneNumber, int index, String currentString){

String currentChar = phoneNumber.substring(index,index+1);

String[] possibleCharacters = conversionMap.get(Integer.valueOf(currentChar));

List<String> results = new ArrayList<String>();

for(String character : possibleCharacters){

if(!(index == phoneNumber.length()-1)){

List<String> results2 = findCombinations(phoneNumber,index+1,currentString+character);

results.addAll(results2);

}else {
results.add(currentString+character);
}

}

return results;
}

关于java - 循环遍历多个数组 - 电话号码到单词生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55211154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com