Java中Scanner使用方式:單行/多行輸入
問題
解決這種情況下的Scanner輸入:單行,多行,數(shù)值,字符串
- 平時寫程序一般不用Scanner,線上筆試的時候,各大公司熱衷于Scanner輸入。
- 平時用LeetCode刷題也不會用到,結(jié)果多次在筆試時候卡在Scanner,特來總結(jié)一波。
最好解決的情況
- 多行輸入元素,其中第一行幾個數(shù)字表示下面幾行的個數(shù)。
以三行輸入為例,第一行輸入兩個數(shù)字m,n,分別表示數(shù)組num1和num2的長度,第二行和第三行輸入num1和num2的元素,以空格分隔。
// 輸入如下
3 4
10 2 3
11 4 5 6
程序如下:
import java.util.Arrays; import java.util.Scanner; public class myScanner { ?? ?Scanner sc = new Scanner(System.in); ?? ?public static void main(String[] args) { ?? ??? ?System.out.println("輸入:"); ?? ??? ?Scanner sc = new Scanner(System.in); ?? ??? ?int m = sc.nextInt(); ?? ??? ?int n = sc.nextInt(); ?? ??? ?int[] num1 = new int[m]; ?? ??? ?int[] num2 = new int[n]; ?? ??? ?// 換成其他數(shù)據(jù)類型也一樣,其他數(shù)值類型就修改int跟nextInt就可以了, ?? ??? ?//String就把nextInt()換成next() ?? ??? ?for(int i = 0; i < m; i ++) { ?? ??? ??? ?num1[i] = sc.nextInt(); ?// 一個一個讀取 ?? ??? ?} ?? ??? ?for(int i = 0; i < n; i ++) { ?? ??? ??? ?num2[i] = sc.nextInt(); ?? ??? ?} ?? ??? ?System.out.println("輸出:"); ?? ??? ?System.out.println(Arrays.toString(num1)); ?? ??? ?System.out.println(Arrays.toString(num2)); ?? ?} }
運行示例:
換成其他數(shù)據(jù)類型也一樣,其他數(shù)值類型就修改int跟nextInt就可以了,String就把nextInt()換成next()
單行輸入多個參數(shù)
- 在一行輸入多個參數(shù)
以空格(也可用其他的符號,不重要)為分割。
// 輸入如下
ABB CCC DDD EEE 123 435
程序如下:
import java.util.Arrays; import java.util.Scanner; public class myScanner { ?? ?Scanner sc = new Scanner(System.in); ?? ?public static void main(String[] args) { ?? ??? ?System.out.println("輸入:"); ?? ??? ?Scanner sc = new Scanner(System.in); ?? ??? ?String str = sc.nextLine(); ?// 讀取一行 ?? ??? ?System.out.println("輸出:"); ?? ??? ?System.out.println(str); ?? ??? ?String[] strIn = str.trim().split(" "); ?// 以空格分割 ?? ??? ?System.out.println(Arrays.toString(strIn)); ?? ?} }
讀出來的只能是字符串,如果想全部為數(shù)字,需要將讀出來的字符串強行轉(zhuǎn)換為數(shù)字(parseInt、parseLong等),運行示例如下:
多行輸入多個參數(shù),每行參數(shù)個數(shù)不定
- 每行輸入不等數(shù)量的參數(shù)
這種情況下,或者可以從題干直接確定行數(shù),或者能夠從輸入的第一行輸入的某個參數(shù)確定下面還有幾行。
以后者為例進(jìn)行說明,假設(shè)第一行輸入m,n,m表示后面有m行,n表示每行最多有n個(可用來截斷某一行多輸入的參數(shù),不詳細(xì)分析了)。
// 輸入如下
3 4
AA bcd 123 54
AA BB
A B C
程序如下:
import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class myScanner { Scanner sc = new Scanner(System.in); public static void main(String[] args) { System.out.println("輸入:"); Scanner sc = new Scanner(System.in); int m = sc.nextInt(); sc.nextLine(); // 很重要,跳到第二行 // 若直接確定行數(shù),注釋掉上面兩行,加入下面一行 // int m = 3; String[] strArr = new String[m]; // 從第二行開始讀取 for(int i = 0; i < m; i++) { strArr[i] = sc.nextLine(); } System.out.println("輸出:"); System.out.println(Arrays.toString(strArr)); ArrayList<String[]> strToOne = new ArrayList<String[]>(); for(int i = 0; i < m; i ++) { String[] tmp = strArr[i].trim().split(" "); strToOne.add(tmp); } System.out.println(strToOne); // 形象點顯示 System.out.print("["); for(int i = 0; i < strToOne.size(); i++) { System.out.print(Arrays.toString(strToOne.get(i))); if(i != strToOne.size()-1) System.out.print(", "); } System.out.print("]"); } }
運行結(jié)果如下:
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot中Redis數(shù)據(jù)庫的使用實例
Spring Boot中除了對常用的關(guān)系型數(shù)據(jù)庫提供了優(yōu)秀的自動化支持之外,對于很多NoSQL數(shù)據(jù)庫一樣提供了自動化配置的支持。本篇文章主要介紹了Spring Boot中Redis的使用實例代碼,有興趣的開業(yè)了解一下。2017-04-04IDEA代碼規(guī)范&質(zhì)量檢查的實現(xiàn)
這篇文章主要介紹了IDEA代碼規(guī)范&質(zhì)量檢查的實現(xiàn),文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08基于@PostConstruct注解的使用,解決向靜態(tài)變量注入值
這篇文章主要介紹了基于@PostConstruct注解的使用,解決向靜態(tài)變量注入值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09淺談HashMap、HashTable的key和value是否可為null
這篇文章主要介紹了淺談HashMap、HashTable的key和value是否可為null,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Springboot?+redis+谷歌開源Kaptcha實現(xiàn)圖片驗證碼功能
這篇文章主要介紹了Springboot?+redis+?歌開源Kaptcha實現(xiàn)圖片驗證碼功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01