Java 6.0 Console 使用問題

import java.io.Console;

public class console {

public static void main(String[] args) {

Console console = System.console();

if( console != null ) {

String user = new String( console.readLine( "輸入帳號:", new Object[0]));

String pwd = new String( console.readPassword( "輸入密碼:", new Object[0]));

console.printf( "帳號是:%s", new Object[]{user});

console.printf( "密碼是:%s", new Object[]{pwd});

} //if

else {

System.out.println( "No Console!" );

} //else

}

}

這支程式沒error是可以執行的,但小弟在下不太了解console.readLine和console.readPassword裡面放的參數new Object[0]是什麼意思

還有console.printf裡面放的參數new Object[]{user}是什麼意思

可以麻煩幫我解答一下嗎???

我有查到readLine和readPassword的用法...

readLine(String fmt, Object... args)

Provides a formatted prompt, then reads a single line of text from the console.

readPassword(String fmt, Object... args)

Provides a formatted prompt, then reads a password or passphrase from the console with echoing disabled.

最後我發現...

import java.io.Console;

public class console {

public static void main(String[] args) {

Console console = System.console();

if( console != null ) {

String user = new String(console.readLine("輸入帳號:");

String pwd = new String(console.readPassword("輸入密碼:");

console.printf( "帳號是:%s",user);

console.printf( "密碼是:%s",pwd);

} //if

else {

System.out.println( "No Console!" );

} //else

}

}

少了new Object也行的通,得到的答案一樣,所以我搞糊塗了。

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    Console類別的readLine(String fmt, Object... args)和readPassword(String fmt, Object... args)的方法參數都是一樣的,第一個是給使用者的格式化提示字串,而當中的提示字串還可以使用格式字元串,而第二個參數則是格式字元串參考的參數列表。

    例如使用:

    console.readLine( "%s輸入帳號:", new Object[]{"請"});

    控制台就會輸出:

    請輸入帳號:

    的提示字串;而方法當中的第一個參數中的%s就代表這邊會放置一個字串(s代表字串),而這個字串的實際內容就在方法當中的第二個參數中指定,在這邊裡我以"請"來設值,所以控制台就會在輸入帳號前在置入一個請字。

    所以你問的:

    不太了解console.readLine和console.readPassword裡面放的參數new Object[0]是什麼意思?

    因為你的readLine和readPassword方法中的格式化提示字串並沒有使用格式字元串,所以你可以給它一個沒有內容的陣列,代表你的提示字串都沒有使用格式字元串。

    還有接下來的:

    console.printf裡面放的參數new Object[]{user}是什麼意思?

    其實就是將user變數的值當做參數傳遞給格式化提示字串。

    至於最後提問的:

    少了new Object也行的通,得到的答案一樣,所以我搞糊塗了。

    是因為

    console.readLine("輸入帳號:");

    這個方法沒有使用格式字元串,所以你可以不設定參數列表。

    P.S:有問題可再提出!

    2008-12-12 14:46:40 補充:

    它的英文為Format Specifier,也可以翻為格式說明符或格式指定符;使用方法我前面有說明過,像數字可以用「%d」來代表。

    Source(s): Ellen Page
  • 1 decade ago

    格式字元串...中文意思我不太懂耶!!!可以解釋一下嗎?

    或是翻成英文該怎麼說呢?謝謝

Still have questions? Get your answers by asking now.