java Split 實現(xiàn)去除一個空格和多個空格
用Split函數(shù)可以去除輸入一個字符串中的空格,并且一般都是將它存儲在一個字符串?dāng)?shù)組之中
例如:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s=in.nextLine(); //如果我輸入:0 1 2 3 4
String[] str=s.split(" ");
System.out.println(s);
System.out.println(str[3]);
}
}
輸出結(jié)果是:
0 1 2 3 4
3
可是會出現(xiàn)這種情況,如果我輸入的是0 1 2 3 4,在2和3之間有3個的空格,那還會有用嗎?
結(jié)果輸出是:
0 1 2 (空格) 3 4
(空格)
也就是沒有輸出str[3],至少看上去是這樣的,然后我分析得出結(jié)論,其實是這樣的,
舉個例子,我輸入2(空)(空)(空)3,執(zhí)行Split函數(shù)后得到的String str數(shù)組
是str[0]=2 ,str[1]=(空),str[2]=(空),str[3]=3
也就是說,Split函數(shù)在執(zhí)行多空格判斷時,會只將第一個空格忽略,其余空格都放入數(shù)組,直到遇到非空格數(shù)3,然后后面的情況重復(fù),只有一個空格,情況是結(jié)果是理想的,多個空格,又是重復(fù)如此
解決方法:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s=in.nextLine();
String[] str=s.split("\\s+ "); //改動這里
System.out.println(s);
System.out.println(str[3]);
}
}
利用正則表達式,就可以實現(xiàn)我們理想的結(jié)果,
例如:輸入2(空)(空)(空)3
結(jié)果:
str[0]=2
str[1]=3
補充知識:Java 鍵盤輸入數(shù)字(空格隔開) 將數(shù)字存入數(shù)組
Scanner方法
核心是單行輸入字符串,切割字符串中的空格,存入數(shù)組
Scanner s = new Scanner(System.in);
String inputStr = s.nextLine();
String[] strArray = inputStr.split(" ");
int[] num = new int[strArray.length];
for(int i = 0 ; i < num.length ; i++){
num[i] = Integer.parseInt(strArray[i]);
}
Scanner輸入的一個問題:在Scanner類中如果我們在任何7個nextXXX()方法之后調(diào)用nextLine()方法,這nextLine()方法不能夠從控制臺讀取任何內(nèi)容,并且,這游標(biāo)不會進入控制臺,它將跳過這一步。nextXXX()方法包括nextInt(),nextFloat(), nextByte(),nextShort(),nextDouble(),nextLong(),next()。此時應(yīng)該使用BufferedReader。 ?
BufferedReader方法
首行輸入數(shù)組大小,次行輸入數(shù)組內(nèi)容,依次用空格隔開。
它的優(yōu)勢在于消耗比scanner更少的內(nèi)存和時間,如果在寫算法時優(yōu)先使用BufferedReader方法。
注意:使用完記得close,Scanner方法不需要close。
public static int[] ListInput() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = 0;
String str = null;
N= Integer.parseInt(br.readLine());
str = br.readLine();
br.close();
int[] myList = new int[N];
String[] strArray = str.split(" ");
for (int i = 0; i < N; i++) {
myList[i] = Integer.parseInt(strArray[i]);
}
return myList;
}
···
以上這篇java Split 實現(xiàn)去除一個空格和多個空格就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot @Value注入boolean設(shè)置默認(rèn)值方式
這篇文章主要介紹了Springboot @Value注入boolean設(shè)置默認(rèn)值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java中從Integer到Date的轉(zhuǎn)換方法
這篇文章主要介紹了Java中integer怎么轉(zhuǎn)換date,在Java中,如果我們有一個Integer類型的數(shù)據(jù),想要將其轉(zhuǎn)換為Date類型,本文給大家介紹了實現(xiàn)方法,并通過代碼示例講解的非常詳細,需要的朋友可以參考下2024-05-05
Springboot遷移到Micronaut實現(xiàn)過程詳解
這篇文章主要為大家?介紹了Springboot遷移到Micronaut實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05
SpringCloud?微服務(wù)數(shù)據(jù)權(quán)限控制的實現(xiàn)
這篇文章主要介紹的是權(quán)限控制的數(shù)據(jù)權(quán)限層面,意思是控制可訪問數(shù)據(jù)資源的數(shù)量,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-11-11

