Scaner類,使用獲取鍵盤輸入。
public boolean DemoTest(){
Scanner input = new Scanner(System.in);
System.out.print("請輸入學生姓名");
String name = input.next();
int score = 0;
double sum =0;
double average = 0;
for(int i =0; i<5 ;i++){
System.out.print("請輸入第["+(i+1)+"]門課程成績");
score = input.nextInt();
sum += score;
}
average = sum /5;
System.out.println("學生"+name+"的平均成績為"+average);
return true;
}
使用JUnit3的測試代碼。
/**
*
*/
package com.ch01;
import ch01.ScannerTest;
import junit.framework.Assert;
import junit.framework.TestCase;
/**
* @author Xu [email protected]
*
*/
public class ScannerTestCase extends TestCase {
public void testch01Scanner(){
ScannerTest input = new ScannerTest();
Assert.assertEquals(true, input.DemoTest());
}
}
Scanner詳解
java.lang.Object -->>> java.util.Scanner
所有已實現的接口-->>>Iterator<String>
一個可以使用正則表達式來解析基本類型和字符串的簡單文本掃描器。
Scanner 使用分隔符模式將其輸入分解為標記,默認情況下該分隔符模式與空白匹配。然後可以使用不同的 next 方法將得到的標記轉換為不同類型的值。
例如,以下代碼使用戶能夠從 System.in 中讀取一個數:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
再看一個例子,以下代碼使 long 類型可以通過 myNumbers 文件中的項分配:
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}
掃描器還可以使用不同於空白的分隔符。下面是從一個字符串讀取若干項的例子:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close(); 輸出為:
1
2
red
blue
以下代碼使用正則表達式同時解析所有的 4 個標記,並可以產生與上例相同的輸出結果:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close();
掃描器所使用的默認空白分隔符通過 Character.isWhitespace 來識別。不管以前是否更改,reset() 方法將把掃描器分隔符的值重置為默認空白分隔符。