电话Word生成器java程序

时间:2014-01-26 21:13:53

标签: java

我正在尝试编写一个将电话号码转换为不同单词组合的java程序。

  

许多人发现很难记住电话号码以便他们使用   数字和字母之间的对应关系,以发展七个字母   与他们的电话号码对应的单词。例如,一个人   电话号码是686-2377可能会使用该通信   如图所示电话键盘上的数字和字母来开发   七个字母的单词“NUMBERS。”每个七个字母的单词对应   一个七位数的电话号码。每七个字母的电话   数字对应于许多不同的七个字母的单词,但大多数   这些词代表不可识别的字母并置。写   给定用户提供的七位数字的程序使用的程序   一个PrintStream对象,每个可能的七个字母写入一个文件   与该数字对应的单词组合。有2,187(3 ^ 7)   这样的组合。避免使用数字为0和1的电话号码。

在程序中我遇到了主要方法的问题。这是错的还是我把它放在了错误的地方?

这是我的计划:

public class TelephoneNumberWordGenerator

{

    String phoneNumber;
    char numberLetters[][] = {
            {'0','0','0'},{'1','1','1'},{'A','B','C'},
            {'D','E','F'},{'G','H','I'},{'J','K','L'},
            {'M','N','O'},{'P','R','S'},
            {'T','U','V'},{'W','X','Y'}};


    Scanner input = new Scanner (System.in);
    private ObjectOutputStream output;
    PrintStream printStream;
    char[] word = new char [7];


    public static void main(String[] args){
    public void getPhoneNumber(){
            System.out.println("Enter a seven-digit telephone number: ");
            phoneNumber = input.next();

        }
    }

    public void openFile()
    {
        try // open file
        {
            output = new ObjectOutputStream(
                    new FileOutputStream ( "Phonenumber.txt") );

        }// end try
        catch ( IOException ioEcception )
        {
            System.err.println( "Error opening file.");
        } // end catch
    }// end method open file

    public void addFileInfo( )
    {
        try
        {
            char[] chars = phoneNumber.toCharArray ();
            int [] digit = new int [chars.length];
            for (int i = 0; i < chars.length; i++)
            {
                digit[i] = Integer.parseInt(String.valueOf(chars[i]));
            }

            printStream = new PrintStream(output);
            printStream.println("\n");


            for ( int level0 = 0; level0 < 3; level0 ++ )
            {
                word[0] = numberLetters[digit[0]][level0];

                for ( int level1 = 0; level1 < 3; level1 ++ )
                {
                    word[1] = numberLetters[digit[1]][level1];

                    for ( int level2 = 0; level2 < 3; level2 ++ )
                    {
                        word[2] = numberLetters[digit[2]][level2];

                        for ( int level3 = 0; level3 < 3; level3 ++ )
                        {
                            word[3] = numberLetters[digit[3]][level3];

                            for ( int level4 = 0; level4 < 3; level4 ++ )
                            {
                                word[4] = numberLetters[digit[4]][level4];

                                for ( int level5 = 0; level5 < 3; level5 ++ )
                                {
                                    word[5] = numberLetters[digit[5]][level5];

                                    for ( int level6 = 0; level6 < 3; level6 ++ )
                                    {
                                        word[6] = numberLetters[digit[6]][level6];
                                        printStream.print(word);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            System.out.println("File written.");
            System.exit(1);

        }
        catch (Exception exception )
        {
            System.err.println( "Error writing to file.");
            System.exit(1);
        }
    }

    public void closeFile()
    {
        try // close file
        {
            if ( output != null )
                output.close();
        }// end try
        catch (IOException ioException )
        {
            System.err.println( "Error closing file.");
            System.exit(1);
        }// end catch


    }// end method closeFile
}

4 个答案:

答案 0 :(得分:0)

您在主方法中定义了方法getPhoneNumber(),这在Java中是不正确的。 在main方法外部定义它,并在main()内部调用它

答案 1 :(得分:0)

对于正在寻找Javascript解决方案的人们,这是一个递归解决方案。对于其他语言,请转换代码

const group = [];
result = [];
let numstr = "";
var letterCombinations = function(num) {
  numstr = num.toString();
  const letters = [,,['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']];
  for (let i=0; i<numstr.length; i++) {
    group.push(letters[parseInt(numstr[i])]);
  }
  wordMaker(num, 0, "");
  return result;
}

const wordMaker = (num, n, w) => {
  for (let i=0; i<group[n].length; i++) {
    if (n === group.length-1) {
      result.push(w + group[n][i])
    }
    else {
      wordMaker(num, n+1, w + group[n][i]);
    }
  }
}

测试输入

console.log(letterCombinations(23));

输出

[ 'ad', 'ae', 'af', 'bd', 'be', 'bf', 'cd', 'ce', 'cf' ]

答案 2 :(得分:-1)

您的问题必须是另一种方法中的主要方法。在java中,你不能在其他方法中编写方法的代码。

答案 3 :(得分:-1)

public static void main(String[] args){

        TelephoneNumberWordGenerator tt=new TelephoneNumberWordGenerator();

                System.out.println("Enter a seven-digit telephone number: ");
                phoneNumber = input.next();
                tt.openFile();
                tt.addFileInfo();
                tt.closeFile();

           }