【发布时间】:2014-02-17 14:36:27
【问题描述】:
我正在尝试编写一个将电话号码转换为不同单词组合的 java 程序。
许多人发现很难记住电话号码,因此他们使用 数字和字母之间的对应关系以发展七个字母 与他们的电话号码相对应的单词。例如,一个人 电话号码为 686-2377 的人可以使用通信 如图所示电话键盘数字和字母,以开发 七个字母的单词“数字”。每个七个字母的单词对应 正好是一个七位数的电话号码。每个七个字母的电话 number 对应于许多不同的七字母词,但大多数 这些词代表无法辨认的字母并列。写 一个程序,给定用户提供的七位数字,使用 一个 PrintStream 对象,每个可能的七个字母写入文件 该数字对应的单词组合。有 2,187 (3^7) 这样的组合。避免使用数字 0 和 1 的电话号码。
在程序中,我遇到了 main 方法的问题。是错了还是我放错了地方?
这是我的程序:
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
}
【问题讨论】:
-
您的主要方法在另一个方法中,
getPhoneNumber()。把它从那里弄出来。 -
缩进你的代码,看起来很糟糕......
-
是的。
main方法是它自己的方法。你把它放在另一个方法中。你怎么没有得到编译器错误? -
附带说明,XKCD 已经做了一些非常接近whatif.xkcd.com/75
-
现在您的
getPhoneNumber()方法在您的main方法中。同样的问题。 在 Java 中,您不能在其他方法中包含方法。 永远。您可以从您的main调用getPhoneNumber()方法,但不能将其放入方法中本身。
标签: java