簡體   English   中英

這個 Java 方法到底在做什么?

[英]What exactly is this Java method doing?

我很好奇下面的代碼部分到底在做什么。 為什么要將 char 更改為 String,然后更改為 int? 至少這就是我認為它正在做的事情。 誰能解釋一下?

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]));
    }

整個代碼如下。 這是我們老師交回的用於家庭作業的正確代碼示例。

 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
}

讓我們逐行檢查以進行解釋。

char[] chars = phoneNumber.toCharArray ();

phoneNumber中的所有內容作為char[] 這與char[] chars = new char[phoneNumber.length()]; for (int i = 0; i < phoneNumber.length(); i++) { chars[i] = phoneNumber.charAt(i); }相同char[] chars = new char[phoneNumber.length()]; for (int i = 0; i < phoneNumber.length(); i++) { chars[i] = phoneNumber.charAt(i); }

int [] digit = new int [chars.length];

創建一個與chars長度相同的新int[]

for (int i = 0; i < chars.length; i++)
{
    digit[i] = Integer.parseInt(String.valueOf(chars[i]));
}

迭代每個字符,並將其解析為int 您可以大大簡化此代碼。 例如,

String phoneNumber = "12345";
int[] digit = new int[phoneNumber.length()];
for (int i = 0; i < phoneNumber.length(); i++) {
    // Or,
    // digit[i] = phoneNumber.charAt(i) - '0';
    digit[i] = Character.digit(phoneNumber.charAt(i), 10);
}
System.out.println(Arrays.toString(digit));

哪個輸出

[1, 2, 3, 4, 5]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM