[英]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.