1.使用從控制台讀取System.in
在前面的課程中,我們熟悉了在屏幕上顯示信息的命令。為此,我們使用了System.out對象及其print()方法println()。簡單方便。
但是,正如您可能已經猜到的那樣,在屏幕上顯示信息對我們來說還不夠。大多數程序的目的是為用戶做一些有用的事情。這意味著用戶經常需要能夠從鍵盤輸入數據。
就像輸出的情況一樣,我們也有一個特殊的數據輸入對象 — System.in. 但是,對我們來說不幸的是,它並不像我們想要的那樣方便。它讓我們一次從鍵盤讀取一個字符的數據。
為了改進這一點,我們將使用另一個類,當與System.in對象配對時,它將為我們提供我們需要的一切。很長一段時間以來,Java 都有適合各種場合的類。我們現在將了解其中的一個。
2.Scanner類
類Scanner(全稱:)java.util.Scanner可以從不同的來源讀取數據,例如控制台、文件和互聯網。如果我們希望它從鍵盤讀取數據,那麼我們必須將對System.in像作為參數傳入,該對象將用作數據源。然後 Scanner 對象將弄清楚如何處理它。
使用對像從鍵盤讀取Scanner看起來像這樣:
| 代碼 | 解釋 |
|---|---|
|
我們創建一個Scanner對象。我們從鍵盤上讀取一行文本。 我們從鍵盤上 讀取了一個數字。 |
看起來很簡單,但真的有那麼簡單嗎?
我想你一定有一堆問題,現在我們來一一解答。
但首先,讓我們演示一個使用該類的完整程序示例Scanner:
import java.util.Scanner;
public class Solution {
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
3.創建Scanner對象
第一個問題是這條線是什麼Scanner console = new Scanner (System.in);?
這條線可能令人困惑,但你會一直看到類似的東西。所以我們認為解釋這裡發生的事情很重要。
回想一下我們通常如何用文本創建變量:
String str = "text";
首先,我們寫入變量的類型 ( String),然後是它的名稱 ( str),最後,在等號之後,我們寫入值。
我們的迷惑線其實是一樣的:
Scanner console = new Scanner(System.in);
Scanner變量
等號左邊的所有內容都是console類型為 的變量聲明Scanner。您可以改為調用它s orscanner甚至keyboard. 然後代碼將如下所示:
Scanner s = new Scanner(System.in);
String name = s.nextLine();
int age = s.nextInt();
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
Scanner keyboard = new Scanner(System.in);
String name = keyboard.nextLine();
int age = keyboard.nextInt();
我認為這讓一切都變得更加清晰。
但是等號右邊的代碼稍微複雜一點。我現在指的是new Scanner(System.in); 也就是說,這裡也沒有發生任何超自然現象。
在這段代碼中,我們告訴 Java 機器:創建一個new類型為 的新對象(關鍵字) ,將對像作為新創建對象的數據源Scanner 傳入。System.inScanner
執行完這一整行後,我們將有一個Scanner名為的變量console ,我們的程序將使用該變量從鍵盤讀取數據。
4. 方法列表
在上面的示例中,我們的Scanner console變量存儲了對對象的引用Scanner。
要在變量引用的對像上調用方法,請在變量名稱後寫一個句點,然後是方法名稱和任何參數。命令的一般外觀如下:
variable.method(arguments);
例子:
System.out.println("Hello");
System.out.println(1);
如果您不打算將參數傳遞給函數,那麼您只需編寫空括號:
variable.method();
例子:
System.out.println();
5.控制台輸入
當我們有一個Scanner對象時,很容易從鍵盤獲取數據。
要從鍵盤讀取一行,你需要這個命令:
String str = console.nextLine();
當程序執行到這一行時,會暫停,等待用戶輸入數據並回車。然後用戶輸入的所有內容都存儲在變量中str。
要從鍵盤讀取一個數字,你需要這個命令:
int number = console.nextInt();
這裡的一切都像前面的命令。當程序執行到這一行時,會暫停,等待用戶輸入數據並回車。之後,用戶輸入的所有內容都將轉換為數字並存儲在number變量中。
如果用戶輸入的數據無法轉換為整數,程序將產生錯誤並退出。
要從鍵盤讀取小數,你需要這個命令:
double number = console.nextDouble();
該語句與方法中的語句非常相似nextInt(),只是它檢查輸入的數據是否可以轉換為數字double。
從鍵盤讀取兩個數字並在屏幕上顯示它們的和的程序示例:
import java.util.Scanner;
public class Solution {
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
int a = console.nextInt();
int b = console.nextInt();
System.out.println(a + b);
}
}
用戶可以在一行中輸入多個數字,用空格分隔:類的方法Scanner知道如何處理這個。也就是說,程序僅在用戶按下 後才讀取數字Enter。
6.Scanner類的其他方法
順便說一句,上面的方法並不是該類Scanner必須提供的全部。完整的方法列表如下所示:
| 方法 | 描述 |
|---|---|
|
讀取數據並將其轉換為byte |
|
讀取數據並將其轉換為short |
|
讀取數據並將其轉換為int |
|
讀取數據並將其轉換為long |
|
讀取數據並將其轉換為float |
|
讀取數據並將其轉換為double |
|
讀取數據並將其轉換為boolean |
|
讀取一個“令牌”。令牌由空格或按回車鍵分隔 |
|
讀取整行 |
還有一些方法可以讓您檢查輸入中的下一個標記,而無需實際獲取它(以便知道使用哪種方法來讀取它)。
| 方法 | 描述 |
|---|---|
|
有嗎byte?可以將輸入轉換為byte? |
|
有嗎short?可以將輸入轉換為short? |
|
有嗎int?可以將輸入轉換為int? |
|
有嗎long?可以將輸入轉換為long? |
|
有嗎float?可以將輸入轉換為float? |
|
有嗎double?可以將輸入轉換為double? |
|
有嗎boolean?可以將輸入轉換為boolean? |
|
還有其他令牌嗎? |
|
還有另一條線嗎? |
7.從字符串中讀取數據
我們之前提到過該類Scanner可以從各種來源讀取數據。其中一個來源是一串文本。
它看起來像這樣:
String str = "text";
Scanner scanner = new Scanner(str);
創建Scanner對象時,我們傳入字符串str而不是System.in對象。現在scanner對象將從字符串中讀取數據。例子:
| 程序代碼: | 解釋: |
|---|---|
|
// 一個 == 10;
// b == 20;
屏幕輸出將是: |
GO TO FULL VERSION