1. 程式人生 > 實用技巧 >Scanner類、Random類、ArrayList類

Scanner類、Random類、ArrayList類

主要內容

  • API概述
  • Scanner類
  • Random類
  • ArrayList類

第1章 API
概述
API(Application Programming Interface),應用程式程式設計介面。Java API是一本程式設計師的 字典 ,是JDK中提供給
我們使用的類的說明文件。這些類將底層的程式碼實現封裝了起來,我們不需要關心這些類是如何實現的,只需要學
習這些類如何使用即可。所以我們可以通過查詢API的方式,來學習Java提供的類,並得知如何使用它們。
API使用步驟
1. 開啟幫助文件。
2. 點選顯示,找到索引,看到輸入框。
3. 你要找誰?在輸入框裡輸入,然後回車。
4. 看包。java.lang下的類不需要導包,其他需要。

5. 看類的解釋和說明。
6. 學習構造方法。

第2章 Scanner類
瞭解了API的使用方式,我們通過Scanner類,熟悉一下查詢API,並使用類的步驟。
2.1 什麼是Scanner類
一個可以解析基本型別和字串的簡單文字掃描器。 例如,以下程式碼使使用者能夠從 System.in 中讀取一個數:

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

備註:System.in 系統輸入指的是通過鍵盤錄入資料。

2.2 引用型別使用步驟
導包
使用import關鍵字導包,在類的所有程式碼之前導包,引入要使用的型別,java.lang包下的所有類無需匯入。 格

式:

import 包名.類名;

舉例:

java.util.Scanner;

建立物件
使用該類的構造方法,建立一個該類的物件。 格式:

資料型別 變數名 = new 資料型別(引數列表);

舉例:

Scanner sc = new Scanner(System.in);

呼叫方法
呼叫該類的成員方法,完成指定功能。 格式:

變數名.方法名(); 

舉例:

int i = sc.nextInt(); // 接收一個鍵盤錄入的整數

2.3 Scanner使用步驟
檢視類

  • java.util.Scanner :該類需要import匯入後使用。

檢視構造方法

  • public Scanner(InputStream source) : 構造一個新的 Scanner ,它生成的值是從指定的輸入流掃描的。

檢視成員方法

  • public int nextInt() :將輸入資訊的下一個標記掃描為一個 int 值。

使用Scanner類,完成接收鍵盤錄入資料的操作,程式碼如下:

//1. 導包
import java.util.Scanner;
public class Demo01_Scanner {
public static void main(String[] args) {
//2. 建立鍵盤錄入資料的物件
Scanner sc = new Scanner(System.in);
//3. 接收資料
System.out.println("請錄入一個整數:");
int i = sc.nextInt();
//4. 輸出資料
System.out.println("i:"+i);
}
}

2.4 練習
求和
鍵盤錄入兩個資料並求和,程式碼如下:

import java.util.Scanner;
public class Test01Scanner {
public static void main(String[] args) {
// 建立物件
Scanner sc = new Scanner(System.in);
// 接收資料
System.out.println("請輸入第一個資料:");
int a = sc.nextInt();
System.out.println("請輸入第二個資料:");
int b = sc.nextInt();
// 對資料進行求和
int sum = a + b;
System.out.println("sum:" + sum);
}
}

取最值
鍵盤錄入三個資料並獲取最大值,程式碼如下:

import java.util.Scanner;
public class Test02Scanner {
public static void main(String[] args) {
// 建立物件
Scanner sc = new Scanner(System.in);
// 接收資料
System.out.println("請輸入第一個資料:");
int a = sc.nextInt();
System.out.println("請輸入第二個資料:");
int b = sc.nextInt();
System.out.println("請輸入第三個資料:");
int c = sc.nextInt();
// 如何獲取三個資料的最大值
int temp = (a > b ? a : b);
int max = (temp > c ? temp : c);
System.out.println("max:" + max);
}
}

2.5 匿名物件【瞭解】
概念
建立物件時,只有建立物件的語句,卻沒有把物件地址值賦值給某個變數。雖然是建立物件的簡化寫法,但是應用
場景非常有限。

  • 匿名物件 :沒有變數名的物件。

格式:

new 類名(引數列表);

舉例:

new Scanner(System.in);

應用場景
1. 建立匿名物件直接呼叫方法,沒有變數名。

new Scanner(System.in).nextInt();

2. 一旦呼叫兩次方法,就是建立了兩個物件,造成浪費,請看如下程式碼。

new Scanner(System.in).nextInt();
new Scanner(System.in).nextInt();

小貼士:一個匿名物件,只能使用一次。
3. 匿名物件可以作為方法的引數和返回值

  • 作為引數:
class Test {
public static void main(String[] args) {
// 普通方式
Scanner sc = new Scanner(System.in);
input(sc);
//匿名物件作為方法接收的引數
input(new Scanner(System.in));
} p
ublic static void input(Scanner sc){
System.out.println(sc);
}
}

注意事項:匿名物件只能使用唯一的一次,下次再用不得不再建立一個新物件。
使用建議:如果確定有一個物件只需要使用唯一的一次,就可以用匿名物件。

  • 作為返回值
class Test2 {
public static void main(String[] args) {
// 普通方式
Scanner sc = getScanner();
} p
ublic static Scanner getScanner(){
//普通方式
//Scanner sc = new Scanner(System.in);
//return sc;
//匿名物件作為方法返回值
return new Scanner(System.in);
}
}

第3章 Random類
3.1 什麼是Random類

此類的例項用於生成偽隨機數。
例如,以下程式碼使使用者能夠得到一個隨機數:

Random r = new Random();
int i = r.nextInt();

3.2 Random使用步驟
檢視類

  • java.util.Random :該類需要 import匯入使後使用。

檢視構造方法

  • public Random() :建立一個新的隨機數生成器。

檢視成員方法

  • public int nextInt(int n) :返回一個偽隨機數,範圍在 0 (包括)和 指定值 n (不包括)之間的int 值。

使用Random類,完成生成3個10以內的隨機整數的操作,程式碼如下:

//1. 導包
import java.util.Random;
public class Demo01_Random {
public static void main(String[] args) {
//2. 建立鍵盤錄入資料的物件
Random r = new Random();
for(int i = 0; i < 3; i++){
//3. 隨機生成一個數據
int number = r.nextInt(10);
//4. 輸出資料
System.out.println("number:"+ number);
}
}
}

備註:建立一個 Random 物件,每次呼叫 nextInt() 方法,都會生成一個隨機數。

3.3 練習
獲取隨機數
獲取1-n之間的隨機數,包含n,程式碼如下:

// 導包
import java.util.Random;
public class Test01Random {
public static void main(String[] args) {
int n = 50;
// 建立物件
Random r = new Random();
// 獲取隨機數
int number = r.nextInt(n) + 1;
// 輸出隨機數
System.out.println("number:" + number);
}
}

猜數字小遊戲

遊戲開始時,會隨機生成一個1-100之間的整數 number 。玩家猜測一個數字 guessNumber ,會與 number 作比較,系統提示大了或者小了,直到玩家猜中,遊戲結束。

小貼士:先執行程式程式碼,理解此題需求,經過分析後,再編寫程式碼

// 導包
import java.util.Random;
public class Test02Random {
public static void main(String[] args) {
// 系統產生一個隨機數1‐100之間的。
Random r = new Random();
int number = r.nextInt(100) + 1;
while(true){
// 鍵盤錄入我們要猜的資料
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你要猜的數字(1‐100):");
int guessNumber = sc.nextInt();
// 比較這兩個資料(用if語句)
if (guessNumber > number) {
System.out.println("你猜的資料" + guessNumber + "大了");
} else if (guessNumber < number) {
System.out.println("你猜的資料" + guessNumber + "小了");
} else {
System.out.println("恭喜你,猜中了");
break;
}
}
}
}

第4章 ArrayList類
4.1 引入——物件陣列

使用學生陣列,儲存三個學生物件,程式碼如下:

public class Student {
private String name;
private int age;
public Student() {
} 
public Student(String name, int age) { this.name = name; this.age = age; }
public String getName() { return name; }
publicvoid setName(String name) { this.name = name; }
publicint getAge() { return age; }
publicvoid setAge(int age) { this.age = age; } }
public class Test01StudentArray { public static void main(String[] args) { //建立學生陣列 Student[] students = new Student[3]; //建立學生物件 Student s1 = new Student("曹操",40); Student s2 = new Student("劉備",35); Student s3 = new Student("孫權",30); //把學生物件作為元素賦值給學生陣列 students[0] = s1; students[1] = s2; students[2] = s3; //遍歷學生陣列 for(int x=0; x<students.length; x++) { Student s = students[x]; System.out.println(s.getName()+"‐‐‐"+s.getAge()); } } }

到目前為止,我們想儲存物件資料,選擇的容器,只有物件陣列。而陣列的長度是固定的,無法適應資料變化的需求。為了解決這個問題,Java提供了另一個容器 java.util.ArrayList 集合類,讓我們可以更便捷的儲存和操作物件資料。

4.2 什麼是ArrayList類

java.util.ArrayList 是大小可變的陣列的實現,儲存在內的資料稱為元素。此類提供一些方法來操作內部儲存的元素。 ArrayList 中可不斷新增元素,其大小也自動增長。
4.3 ArrayList使用步驟
檢視類

  • java.util.ArrayList <E> :該類需要 import匯入使後使用。

<E> ,表示一種指定的資料型別,叫做泛型。 E ,取自Element(元素)的首字母。在出現 E 的地方,我們使用一種引用資料型別將其替換即可,表示我們將儲存哪種引用型別的元素。程式碼如下:

ArrayList<String>,ArrayList<Student>

檢視構造方法

  • public ArrayList() :構造一個內容為空的集合。

基本格式:

ArrayList<String> list = new ArrayList<String>();

在JDK 7後,右側泛型的尖括號之內可以留空,但是<>仍然要寫。簡化格式:

ArrayList<String> list = new ArrayList<>();

檢視成員方法

  • public boolean add(E e) : 將指定的元素新增到此集合的尾部。引數 E e ,在構造ArrayList物件時, <E> 指定了什麼資料型別,那麼 add(E e) 方法中,只能新增什麼資料型別的物件。

使用ArrayList類,儲存三個字串元素,程式碼如下:

public class Test02StudentArrayList {
public static void main(String[] args) {
//建立學生陣列
ArrayList<String> list = new ArrayList<>();
//建立學生物件
String s1 = "曹操";
String s2 = "劉備";
String s3 = "孫權";
//列印學生ArrayList集合
System.out.println(list);
//把學生物件作為元素新增到集合
list.add(s1);
list.add(s2);
list.add(s3);
//列印學生ArrayList集合
System.out.println(list);
}
}

4.4 常用方法和遍歷
對於元素的操作,基本體現在——增、刪、查。常用的方法有:

  • public boolean add(E e) :將指定的元素新增到此集合的尾部。
  • public E remove(int index) :移除此集合中指定位置上的元素。返回被刪除的元素。
  • public E get(int index) :返回此集合中指定位置上的元素。返回獲取的元素。
  • public int size() :返回此集合中的元素數。遍歷集合時,可以控制索引範圍,防止越界。

這些都是最基本的方法,操作非常簡單,程式碼如下:

public class Demo01ArrayListMethod {
public static void main(String[] args) {
//建立集合物件
ArrayList<String> list = new ArrayList<String>();
//新增元素
list.add("hello");
list.add("world");
list.add("java");
//public E get(int index):返回指定索引處的元素
System.out.println("get:"+list.get(0));
System.out.println("get:"+list.get(1));
System.out.println("get:"+list.get(2));
//public int size():返回集合中的元素的個數
System.out.println("size:"+list.size());
//public E remove(int index):刪除指定索引處的元素,返回被刪除的元素
System.out.println("remove:"+list.remove(0));
//遍歷輸出
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
}
}

4.5 如何儲存基本資料型別

ArrayList物件不能儲存基本型別,只能儲存引用型別的資料。類似 <int> 不能寫,但是儲存基本資料型別對應的包裝型別是可以的。所以,想要儲存基本型別資料, <> 中的資料型別,必須轉換後才能編寫,轉換寫法如下:

我們發現,只有 Integer 和 Character 需要特殊記憶,其他基本型別只是首字母大寫即可。那麼儲存基本型別數
據,程式碼如下:

public class Demo02ArrayListMethod {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
System.out.println(list);
}
}

4.6 ArrayList練習
數值新增到集合
生成6個1~33之間的隨機整數,新增到集合,並遍歷

public class Test01ArrayList {
public static void main(String[] args) {
// 建立Random 物件
Random random = new Random();
// 建立ArrayList 物件
ArrayList<Integer> list = new ArrayList<>();
// 新增隨機數到集合
for (int i = 0; i < 6; i++) {
int r = random.nextInt(33) + 1;
list.add(r);
} 
// 遍歷集合輸出
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}

物件新增到集合
自定義4個學生物件,新增到集合,並遍歷

public class Test02ArrayList {
public static void main(String[] args) {
//建立集合物件
ArrayList<Student> list = new ArrayList<Student>();
//建立學生物件
Student s1 = new Student("趙麗穎",18);
Student s2 = new Student("唐嫣",20);
Student s3 = new Student("景甜",25);
Student s4 = new Student("柳巖",19);
//把學生物件作為元素新增到集合中
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
//遍歷集合
for(int x = 0; x < list.size(); x++) {
Student s = list.get(x);
System.out.println(s.getName()+"‐‐‐"+s.getAge());
}
}
}

列印集合方法

定義以指定格式列印集合的方法(ArrayList型別作為引數),使用{}擴起集合,使用@分隔每個元素。格式參照 {元素@元素@元素}。

public class Test03ArrayList {
public static void main(String[] args) {
// 建立集合物件
ArrayList<String> list = new ArrayList<String>();
// 新增字串到集合中
list.add("張三丰");
list.add("宋遠橋");
list.add("張無忌");
list.add("殷梨亭");
// 呼叫方法
printArrayList(list);
} 
public static void printArrayList(ArrayList<String> list) { // 拼接左括號 System.out.print("{"); // 遍歷集合 for (int i = 0; i < list.size(); i++) { // 獲取元素 String s = list.get(i); // 拼接@符號 if (i != list.size() ‐ 1) { System.out.print(s + "@"); } else { // 拼接右括號 System.out.print(s + "}"); } } } }

注意事項:
對於ArrayList集合來說,直接列印得到的不是地址值,而是內容。
如果內容是空,得到的是空的中括號:[]

獲取集合方法
定義獲取所有偶數元素集合的方法(ArrayList型別作為返回值)

public class Test04ArrayList {
public static void main(String[] args) {
// 建立Random 物件
Random random = new Random();
// 建立ArrayList 物件
ArrayList<Integer> list = new ArrayList<>();
// 新增隨機數到集合
for (int i = 0; i < 20; i++) {
int r = random.nextInt(1000) + 1;
list.add(r);
} /
/ 呼叫偶數集合的方法
ArrayList<Integer> arrayList = getArrayList(list);
System.out.println(arrayList);
} 
public static ArrayList<Integer> getArrayList(ArrayList<Integer> list) { // 建立小集合,來儲存偶數 ArrayList<Integer> smallList = new ArrayList<>(); // 遍歷list for (int i = 0; i < list.size(); i++) { // 獲取元素 Integer num = list.get(i); // 判斷為偶數,新增到小集合中 if (num % 2 == 0){ smallList.add(num); } } / / 返回小集合 return smallList; }
}