2_2.4 讀入字串

2011年8月19日 星期五

| | |

2_2.4 讀入字串
      我們已經介紹許多處理數值的範例。接著,就來撰寫處理字串的程式吧!在開始撰寫之前,請試著先挑戰底下的題目。

思考題 :
執行 Chap2_2_1.class後,接著 輸入 abc
XY 加減乘除運算。
請輸入整數Xabc

錯誤訊息
Exception in thread "main" java.util.InputMismatchException
  at java.util.Scanner.throwFor(Unknown Source)
  at java.util.Scanner.next(Unknown Source)
  at java.util.Scanner.nextInt(Unknown Source)
  at java.util.Scanner.nextInt(Unknown Source)
  at Chap2_2_1.main(Chap2_2_1.java:12)

我們得到和之前一樣的錯誤結果。接下來,我們將討論如何讀入字串。

Chap2_2_4.java
// 輸入姓名後,程式會跟您說早安(next()版)
import java.util.Scanner;
class Chap2_2_4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("請問您的大名是:");
String s = scanner.next();    // 讀入字串
System.out.println("早安!" + s + "先生。");              // 顯示
}
}

執行結果
請問您的大名是:天天旺
早安!天天旺先生。

程式說明:
1. 接受字串型態的變數會以String宣告,如同範例中的String s。
2. 字串變數s就會接收使用者從鍵盤輸入的字串,例如s = scanner.next();。

       如果,我們將輸入字串天天旺更改為 天旺”,也就是在"天天"中間抽入一個空白字元。執行程式後,結果如下
請問您的名字是:天 天旺
早安!天先生。

比較這兩個結果,我們可以發現,當使用 next()方法來讀入鍵盤輸入的字串時,空格和 tab 字元會視為字串分段的符號。因此,當我們在 " 天旺"中插入一個空格時,該字串就會變成"天"和"天旺"這兩個字串。所以,字串變數 s 只會讀入字串"天"。接著,我們使用 nextLine() 方法,看看結果有何不同。

Chap2_2_5.java
//輸入姓名後,程式會跟您說早安(nextLine()版)
import java.util.Scanner;
class Chap2_2_5 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("請問您的姓名是:");
String s = scanner.nextLine();     // 讀入一整行字串
System.out.println("早安!" + s + "先生。");  //   輸出
}
}

執行結果
請問您的姓名是:天 天旺
早安! 天 天旺先生。

 
程式說明:
       程式Chap2_2_5.java利用nextLine()方法來讀入鍵盤輸入的字串。因為,nextLine()方法會讀入一整行的文字字串,就可以得到"早安! 天 天旺先生。"的輸出結果。

       String 型態變數可以進行字串初始化,以及指定字串等動作。   
Chap2_2_6.java
// 字串的初始化及改寫
class Chap2_2_6 {
public static void main(String[] args) {
String str1 = "AAA";     // 初始化
String str2 = "QQQ";    // 初始化
str1 = "TTT"; // 改寫(將TTT指定給str1)
System.out.println("字串str1為 " + str1 + "。"); // 顯示
System.out.println("字串str2為 " + str2 + "。"); // 顯示
}
}

執行結果
字串str1為 TTT。
字串str2為 QQQ。


程式說明:
        字串變數str1會先初使化為 "AAA",然後再指定為"QQQ"。因此,str1的內容會由"AAA"變成"QQQ"。

思考題 :

Err2_2_3.java
public class Err2_2_3 {

public static void main(String[] args) {
//求取 x + y 之和
int x = 5;
String y = "6";
System.out.println("x + y = " + (x + y));
}
}

錯誤訊息
x + y = 56

為什麼這個結果不是 5+6=11 ?

Err2_2_4.java
class Err2_2_4{

public static void main(String[] args){
String str = qq ;
System.out.println(str);
}
}

錯誤訊息
D:\chap2\chap2\Err2_2_4.java:3: cannot find symbol
symbol  : variable qq
location: class Err2_2_4
String str = qq ;
            ^
1 error


練習題 2-5
       製作一個讓會員輸入姓名。然後,系統會表達歡迎的程式。
大福會員系統-會員登入
請輸入您的姓名。
--------------------------------
姓 : 王
名 : 大旦
歡迎 王大旦 先生/小姐 。


練習題 2-6
       利用String改寫的技巧。製作一支程式不管由鍵盤輸入什麼字串,輸出永遠是”來福”。
請輸入 : 王小明
永遠是來福

0 意見:

張貼留言